这是我的代码: 我已经在页面顶部开始了index.php的会话 `
if(isset($_POST['btsubmit'])){
$username=$_POST['txtname'];
$password=$_POST['txtpass'];
$sql="SELECT * FROM tbuser WHERE AccountName='$username' AND Password='$password'";
$query=mysql_query($sql) or die(mysql_error());
if($username="" or $password=""){
echo"Your box is empty";
}else{
if($row = mysql_fetch_array($query)){
$_SESSION['AccountName']= $row['AccountName'];
header("Location: welcome.php");
exit();
}else{
echo "fail";
}
}
}
>` 当我登录成功时,它不会重定向到页面welcome.php,它在index.php上保持不变。任何帮助,将不胜感激。感谢..
答案 0 :(得分:5)
我认为这是因为你的if条件if($username="" or $password=""){
这应该是==而不是=。因此,它永远不会进入代码的else部分。
另外,这是你的实际代码吗?您首先进行数据库查询,然后检查用户名/密码输入是否为空。
可能你应该首先检查两个inpts是否都是空的然后你应该进行查询,如果查询成功,那么你应该重定向到欢迎页面。
答案 1 :(得分:1)
首先,Don't use mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
以我的评论为基础:
<?php
$con=mysql_connect("localhost","root","");
mysql_select_db("myphone",$con);
if(isset($_POST['btsubmit'])){
$username=(!empty($_POST['txtname']))?mysql_real_escape_string($_POST['txtname']):false;
$password=(!empty($_POST['txtname']))?mysql_real_escape_string($_POST['txtpass']):false;
if($username===false || $password===false){die('Username or password is blank!');}
$sql="SELECT AccountName FROM tbuser WHERE AccountName='$username' AND Password='$password' LIMIT 1";
$query=mysql_query($sql);
if(mysql_num_rows($query)==1){
$row = mysql_fetch_assoc($query);
$_SESSION['AccountName']=$row['AccountName'];
$_SESSION['LoggedIn']=TRUE;
header("Location: ./welcome.php");
exit();
}else{
echo "Fail";
}
}
?>