我正在尝试创建一个简单的登录系统。当我运行登录表单(使用正确的用户名和密码)时,似乎没有运行php。有什么建议吗?
<?php
$host="linuxserver"; // Host name
$username="jparry2"; // Mysql username
$password=""; // Mysql password
$db_name="jparry2"; // Database name
$tbl_name="customer"; // Table name
// Connect to server and select databse.
mysqli_connect("$host", "$username", "$password")or die("cannot connect");
mysqli_select_db("$db_name")or die("cannot select DB");
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysqli_query($sql);
// Mysql_num_row is counting table row
$count=mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file “login_success.php”
session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
?>
<html>
<body>
</body>
</html>
编辑添加的登录表单代码
<html>
<head><title>Login</title></head>
<body>
<form action='checklogin.php'
method='POST' style='margin: .5in'>
<p><label for='user_name' style='font-weight: bold;
padding-bottom: 1em'>USER ID: </label>
<input type='text' name='myusername' id='myusername'
value='' /></p>
<p><label for='password' style= 'font-weight: bold'>Password: </label>
<input type='password' name='mypassword' id='mypassword'
value='' /></p>
<p><input type='submit' value='Login'> </p>
<input type='hidden' name='sent' value='yes'/>
<a href= "/home/jparry2/public_html/register.php">Register</a>
</form>
</body>
</html>
答案 0 :(得分:5)
如果您的浏览器要求您下载php文件,则表示未调用php解释器。即您没有正确安装或配置它。
答案 1 :(得分:1)
您收到任何错误消息吗?对我来说似乎没问题。您是否尝试过回显if-block中的某些内容?这可能有助于你理解错误。
您可以查看或尝试的一些事项:
header()
功能之前没有向浏览器输出任何内容。如果您关闭了error_reporting并将某些内容输出到浏览器,则使用header()
将导致致命错误,这可能会导致空白页。您的代码中的其他一些注释:
mysqli_select_db("$db_name")
变为mysqli_select_db($db_name)
stripslashes()
,则无需mysql_real_escape_string
。后者将自己处理这项工作。答案 2 :(得分:1)
在某些浏览器中,Location
标头区分大小写,因此您的header("location:login_success.php");
电话可能无法正常工作(comment上的header
documentation page表示发生这种情况在IE7中)。尝试大写位置中的l
。
答案 3 :(得分:1)
您没有执行任何“session_start()”,因此无法使用您的会话。
也许您需要在“login_success.php”脚本中启动它。
答案 4 :(得分:1)
我同意Daniel,修改header("Location: login_success.php");
此外,作为附注,因为在撰写本文时,没有清楚地解释什么不起作用,但是在添加会话变量时,您需要session_start()
。
同时尝试使用$_SESSION['variable']
,因为从PHP: session_register取得的PHP 5.30不推荐使用session_register()
尝试这样的事情
if($count==1){
session_start();
// Register $myusername, $mypassword and redirect to file “login_success.php”
$_SESSION['username'] = $myusername;
$_SESSION['mypassword'] = $mypassword;
session_write_close(); // makes sure nothing was lost during redirect
header('Location: nextpage.php');
}