2009-12-09 53 views
0

我正尝试使用登录表单连接到数据库。目前数据库中只有一个用户,但按下提交时,页面只会刷新并且不会重定向到主页。这里是我的代码:到数据库的PHP连接

<html> 
<head><title>Login</title></head> 
<body> 


<?php 
ob_start(); 
include('connect.php'); 

$handle = mysql_connect($hostname, $username, $password)or die("cannot connect"); 
$error = mysql_select_db($databasename,$handle); 

$myusername=$_POST['username']; 
$mypassword=$_POST['password']; 

$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 

$sql="SELECT * FROM $tablename WHERE UserName='$myusername' and Password='$mypassword'"; 
$result=mysql_query($sql); 

$count=mysql_num_rows($result); 

if($count==1){ 
session_register("username"); 
session_register("password"); 
header("Location: home.php"); 
} 
else { 
echo "Wrong Username or Password"; 
} 
?> 


<form action='LoginREAL.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='username' id='username' 
      value='' /></p> 
    <p><label for='password' style= 'font-weight: bold'>Password: </label> 
     <input type='password' name='password' id='password' 
      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> 

回答

1

我的猜测是问题不在于您的登录功能,而在于您的header()重定向语句。只有在任何html发送到浏览器之前,header()重定向才会起作用。一旦html开始,http头已经被发送并且不能被改变。希望这是你唯一的问题。

+0

我改变了,但仍然有同样的问题。有任何想法吗? – user228180 2009-12-09 18:25:52

+0

好的,我可能会遗漏一些东西,但是当你使用session_register()时,为什么你要注册“username”?如果我正确理解session_register(),那么您只是设置了一个名为“username”的会话变量,它没有任何值。也许尝试把“myusername”(这是你的变量与用户名后的值)而不是“username”。我从来没有使用过session_register(),所以我可能是错的。 – darthnosaj 2009-12-09 18:38:29

+0

根据php手册,反正session_register()已被弃用。我会尝试使用$ _SESSION [“username”] = $ myusername。我希望这有帮助! – darthnosaj 2009-12-09 18:40:09

0

在将输出发送到浏览器后,您不能使用header(),因此您需要将html内容放在html标签之前。顺便说一句,我不知道你的服务器是如何设置的,但我不认为你的注册链接可以工作(我假设public_html是服务器的根...)。

编辑:我看到你打开输出缓冲,但你没有冲洗缓冲区。有没有特别的理由要这样做?