Php 民政事务局局长职能问题
我的login.php中有这个php代码Php 民政事务局局长职能问题,php,mysql,login,Php,Mysql,Login,我的login.php中有这个php代码 if (isset($_POST['logIn'])) { $errmsg = ""; $logname = mysqli_real_escape_string($dbc, trim($_POST['usernameIn'])); $logpassword = mysqli_real_escape_string($dbc, trim($_POST['passwordIn'])); $query = "SELECT use
if (isset($_POST['logIn'])) {
$errmsg = "";
$logname = mysqli_real_escape_string($dbc, trim($_POST['usernameIn']));
$logpassword = mysqli_real_escape_string($dbc, trim($_POST['passwordIn']));
$query = "SELECT user_id, username FROM members WHERE username = '$logname' AND password = SHA('$logpassword')";
$data = mysqli_query($dbc, $query);
if (mysqli_num_rows($data) == 1) {
$row = mysqli_fetch_array($data);
setcookie('user_id', $row['user_id'], time() + (60 * 60 * 24 * 30)); //expires after 30 days
setcookie('username', $row['username'], time() + (60 * 60 * 24 * 30));
$home = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/index.php';
header('Location: ' . $home);
}
else {
$errmsg = '<p class="errormsg">Username or password is incorrect.</p>';
}
}
有人看到这个脚本的问题吗?谢谢 您还可以通过以下方式从PHP执行此操作:
VALUES ('$username', '".sha1($password)."', '$email')";
在这种情况下,您不需要使用escape it。您也可以通过以下方式从PHP执行此操作:
VALUES ('$username', '".sha1($password)."', '$email')";
在这种情况下,您不需要使用escape it。我没有注意到您的代码中有任何重大错误,但我有一些建议可以帮助调试它:
if(mysqli_num_rows($data)==1){
更改为if(mysqli_num_rows($data)>0){
我没有注意到您的代码中有任何重大错误,但我有一些建议可以帮助调试它:
if(mysqli_num_rows($data)==1){
更改为if(mysqli_num_rows($data)>0){
您是否尝试查看$data中是否返回了任何内容?我通常在PHP中使用“sha”密码。由于它们返回的是相同的密码,从技术上讲,错误肯定在其他地方。到目前为止,我没有发现您的代码有任何错误。检查DB是否已连接。您是否尝试查看$data中是否返回了任何内容?我通常使用“sha”PHP中的密码。由于它们返回相同的密码,从技术上讲,错误肯定在其他地方。到目前为止,我没有发现您的代码有任何错误。请检查数据库是否已连接。“…以防两行具有相同的用户名和密码”我认为这是一个失败,而不是一个成功。该表不应该被设计为允许这样一个奇怪的东西。同意。但是它仍然有助于调试当前的问题“……如果两行具有相同的用户名和密码”我认为这是一个失败,而不是一个成功。该表不应该被设计为允许这样一个奇怪的东西。同意。但是它仍然有助于调试当前的问题。你有一个SQL注入漏洞,你把输入连接到查询字符串。对PHP和SQL注入做一个快速搜索,你应该找到FI。您有一个SQL注入漏洞,将输入连接到查询字符串。在SO上快速搜索PHP和SQL注入,您应该找到如何修复它。