我正在尝试创建一个简单的登录页面。我有一个注册页面,当用户注册然后尝试登录时,它将导航到主页。但是,当用户尝试登录并且用户名和密码不在数据库中时,我希望脚本将它们导航到注册页面。
我在使用 else 语句时遇到问题,有人可以帮我解决这个问题吗?
这是脚本...
function SignIn()
{
session_start(); //starting the session for user profile page
if(!empty($_POST['userName']))
{
$query = mysql_query("SELECT * FROM users where userName = '$_POST[userName]' AND createPassword = '$_POST[createPassword]'") or die(mysql_error());
$row = mysql_fetch_array($query) or die(mysql_error());
if(!empty($row['userName']) AND !empty($row['createPassword']))
{
$_SESSION['userName'] = $row['createPassword'];
echo "<script>window.location = 'index.php'</script>";
}
else
{
echo "<script>window.location = 'signUp.php'</script>";
}
}
}
if(isset($_POST['submit']))
{
SignIn();
}
?>
编辑:您好,感谢您的反馈,我已经更改了查询并编辑了回显。感谢您提供安全提示,但在此脚本中安全性不是问题。如果您已经注册,我只需要它指导您访问索引,如果您没有注册,我只需要它指导您访问注册表。 如果登录和密码不正确,我仍然无法让页面重定向到注册页面。
如果正确,它会将您带到索引,但如果错误,它会显示此脚本所在的 php 页面。
这是我目前的尝试
function SignIn()
{
session_start();
if(!empty($_POST['userName']))
{
$query = mysql_query("SELECT * FROM users where userName = '{$_POST['userName']}' AND createPassword = '{$_POST['createPassword']}'") or die(mysql_error());
$row = mysql_fetch_array($query) or die(mysql_error());
if(!empty($row['userName']) AND !empty($row['createPassword']))
{
$_SESSION['userName'] = $row['createPassword'];
header("Location:http://localhost/waves/index.php");
}
else if (!empty($row['userName']) AND !empty($row['createPassword']))
{
$_SESSION['userName'] != $row['createPassword'];
header("Location:http://localhost/waves/signUp.php");
}
}
}
if(isset($_POST['submit']))
{
SignIn();
}
?>
最佳答案
1) 更正您的查询:
"SELECT * FROM users where userName = '{$_POST['userName']}' AND createPassword = '{$_POST['createPassword']}'"
2) 为什么需要JS做重定向?您可以为其使用 header
。
header("Location:http://localhost/signUp.php");
3) 不要使用mysql_*
。它已被弃用并从 PHP 7 中删除。使用 mysqli_*
或 PDO
。
4) 您的查询不安全。阅读此 How can I prevent SQL injection in PHP? .
关于javascript - 登录失败时导航到注册页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35434107/