PHP + SQL 登录系统。返回错误的值[重复]
Posted
技术标签:
【中文标题】PHP + SQL 登录系统。返回错误的值[重复]【英文标题】:PHP + SQL Login system. Returning the wrong value [duplicate] 【发布时间】:2020-06-28 22:40:18 【问题描述】:大家好,这里的新手,
我试图弄清楚为什么我的代码返回“登录成功”,无论何时我的 $loginresult 不 = 1。这是我第一次尝试使用我的登录系统实现准备好的语句以避免 SQL 注入和很好奇问题是否在于我是如何写的。
我可以肯定地说,当我成功登录时,我的值是 1,不成功是 5。
当它为 5 时,它仍然返回与 1 应该返回的相同的回声。
感谢大家的时间和耐心。
<?php session_start(); ?>
<!DOCTYPE html>
<head>
<title>Login</title>
</head>
<body>
<?php
include('config.php');
$conn = sqlsrv_connect($serverName, $conn_array);
$myparams['username'] = $_POST['username'];
$myparams['password'] = $_POST['password'];
// All checks done already (including password check). Begin building prepare statement.
$sql = "SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_WARNINGS ON
SET ANSI_PADDING ON
exec LoginScript @in_accountname=?,@in_password=?
";
//Array for prep
$procedure_params = array(
array(&$myparams['username'], SQLSRV_PARAM_IN),
array(&$myparams['password'], SQLSRV_PARAM_IN)
);
/* Prepare the statement. */
if( $stmt = sqlsrv_prepare( $conn, $sql, $procedure_params))
// echo "Statement was successfully prepared.\n";
else
echo "Statement could not be prepared.\n";
// ( print_r( sqlsrv_errors(), true)); ACTIVATE ONLY FOR DEBUGGING TO PREVENT HELPING SQL INJECTORS
/* Execute the statement. */
if( sqlsrv_execute( $stmt))
// echo " Statement executed.\n";
else
echo " Unable to execute prepared statement!\n";
// ( print_r( sqlsrv_errors(), true));
//checkuser
$result = sqlsrv_prepare( $conn, $sql, $procedure_params);
$info=sqlsrv_fetch_array($stmt);
$LoginResult = $info;
//Login Success
if (!$LoginResult=1)
echo "Login DEAD.";
echo "Login Result: ".$info[0]."\n";
else
echo "Login Successful.";
echo "Login Result: ".$info[0]."\n";
/* Free the statement and connection resources. */
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>```
【问题讨论】:
【参考方案1】:if (!$LoginResult=1)
不是你想要的,你需要的
if ($LoginResult != 1) is not valid
见:Equality Operators
您对原始代码所做的是将值 1 分配给 $loginResult 变量并检查它是否不真实
【讨论】:
以上是关于PHP + SQL 登录系统。返回错误的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章