我有一个非常基本的登录检查页面:
$host="localhost"; // Host name
$username="user"; // Mysql username
$password="pass"; // Mysql password
$db_name="db"; // Database name
$tbl_name="userdata"; // Table name
$lastLogDate=date("l, m/d/y, h:i:sa");
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$logdate=date("m/d/Y");
$logtime=date("H:i:s");
$logip=$_SERVER['REMOTE_ADDR'];
$nol=$_POST['nol'];
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$origpass=$_POST['mypassword'];
$origpass=str_replace("'", '"', $origpass);
$from=$_POST['from'];
if ($from=="forum") {
$to="/forum";
}
if (isset($_POST['nol'])) {
$rd=$nol;
}
else {
$rd="/home";
}
$sql="SELECT * FROM userdata WHERE username collate latin1_general_cs='$myusername'";
$result=mysql_query($sql);
$result=mysql_fetch_array($result);
$password=$result['password'];
$_SESSION['mypassword']=$mypassword;
$salt = 'no';
$salted_password = $mypassword.$salt;
$mypassword = md5($salted_password);
if($mypassword==$password) {
$mypassword=$_POST['mypassword'];
$_SESSION['myusername']=$myusername;
$_SESSION['mypassword']=$_POST['mypassword'];
$sqlDate="UPDATE userdata SET lastLog='$lastLogDate' WHERE username='$myusername'";
$resultDate=mysql_query($sqlDate);
mysql_query("INSERT INTO login_log (date, time, username, password, ip, success) VALUES ('$logdate', '$logtime', '$myusername', '$origpass', '$logip', '1')");
header("location:$rd");
}
else {
mysql_query("INSERT INTO login_log (date, time, username, password, ip, success) VALUES ('$logdate', '$logtime', '$myusername', '$origpass', '$logip', '0')");
header("location:/login?msg=wrongUorP");
}
提交表单后,页面只是空白。 error_log
中没有任何错误。我从昨天开始就没碰过它,昨天它正在做点什么。
另一个问题是我将用户专用页面重定向到/login?nol=/<page>
,因此,例如,如果页面为http://www.example.com/random/page/text.txt,则重定向将为/login?nol=/random/page/text.txt
。该页面检查用户是否使用以下命令登录:
<?php
session_start();
if(!isset($_SESSION['myusername'])){
header("location:/login?nol=/random/page/text.txt");
}
?>
但是每当用户登录时,即使/login?nol=/random/page/text.txt
(我认为)已经设置,用户也会被重定向到$_SESSION['myusername']
。 (参见上面的代码)。我最近使用cPanel更新到PHP 5.3,之前我有session_register()
。我是否更改了会话变量?
这是我的接收页面:
session_start();
if(!isset($_SESSION['myusername'])){
//header("location:/login?nol=/home"); // commented out to test if it receives session variable
echo "<h1>hello</h1>"; //the page displayed this, so the script did NOT receive the variable.
}
答案 0 :(得分:1)
显示您在代码中的位置session_start()
(顶部块)。不是较小的第二个蓝色/灰色块
周杰伦很好地参考了他在正确使用的数据库层上的优秀网站,以及使用它们的正确方法。还有更多关于这里的文章。我刚用你的
注入我的桌子SELECT * FROM userdata WHERE username collate latin1_general_cs='$myusername';
对于插入物,做第二级注射时间炸弹很容易。