<?php
function redirect_to_index_with_error(){
echo '<meta http-equiv="refresh" content="0;url=index.php">';
}
function go_to_home(){
echo '<meta http-equiv="refresh" content="0;url=home.php">';
}
$email = mysql_real_escape_string($_POST['username']); echo $email;
$pwd = mysql_real_escape_string($_POST['password']);
echo $pwd;
$query = "SELECT * FROM users WHERE email='$email' AND password=MD5('$pwd')";
echo "query variable created.";
mysql_connect("localhost","root","") or die(mysql_error());
echo "connected."; //nothing
mysql_select_db("mcp") or die(mysql_error());
$results = mysql_query($query) or die(mysql_error());
if(mysql_num_rows($results) == 0){
redirect_to_index_with_error();
exit();
}
$userID = null;
$name = null;
$school = null;
$mod = null;
while($user = mysql_fetch_array($results)){
$userID = $user['ID'];
$name = $user['Name'];
$school = $user['School'];
if($user['Mod'] == '1')
$mod = true;
else
$mod = false;
}
if(!isset($_SESSION))
session_start();
//set session variables
$_SESSION["userID"] = $userID;
$_SESSION["name"] = $name;
$_SESSION["school"] = $school;
$_SESSION["mod?"] = $mod;
go_to_home();
exit();
?>
PHP回应所有内容,直到“连接”。它甚至没有显示mysql错误。我已经在Windows上使用WAMP完美地运行了这段代码,但是在使用MAMP的Mac上却没有。我已经验证服务器正在运行,所以我不知道问题是什么。我正在使用PHP 5.3.6。
答案 0 :(得分:1)
连接后你必须调用mysql_real_escape_string() 否则此函数返回一个空字符串,您的查询失败。
虽然它引起了错误,但似乎你没有看到它。
因此,你应该转向显示错误或查看错误日志 - 如果没有能力查看错误消息就无法进行编程
此外,你必须改善你的形式逻辑 要做出类似“PHP似乎拒绝连接MySQL”的声明,你必须先验证它。 Connect只是一行并返回一个值 您可以验证此值并得出一定的结论 但是运行几十行的整个代码并仅仅对一个代码进行陈述是没有意义的。
答案 1 :(得分:1)
在致电mysql_real_escape_string()
所以将mysql_connect("localhost","root","") or die(mysql_error());
移到顶部。
答案 2 :(得分:1)
将mysql_connect()
语句移到其他所有内容之上。
// put this at the TOP
mysql_connect("localhost:3306","root","") or die(mysql_error());
答案 3 :(得分:1)
正如其他人提到的那样,请参阅此说明: http://php.net/mysql_real_escape_string#refsect1-function.mysql-real-escape-string-notes
此外,您至少应该在开发过程中看到错误。 请参阅:error_reporting()