【问题标题】:Php connection to databasephp连接数据库
【发布时间】:2009-12-09 18:14:27
【问题描述】:

我正在尝试使用登录表单连接到数据库。目前数据库中只有一个用户,但是当按下提交时,页面似乎只是刷新,并没有按照应有的方式重定向到主页。这是我的代码:

<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>

【问题讨论】:

    标签: php sql database


    【解决方案1】:

    我的猜测是问题不在于您的登录功能,而在于您的 header() 重定向语句。 header() 重定向只有在任何 html 发送到浏览器之前发生才会起作用。 html 启动后,http 标头已发送且无法更改。希望这是您唯一的问题。

    【讨论】:

    • 我改变了,但仍然有同样的问题。有什么想法吗?
    • 好的,我可能遗漏了一些东西,但是当您使用 session_register() 时,为什么要注册“用户名”?如果我正确理解 session_register(),那么您只是设置了一个名为“用户名”的会话变量,它没有任何价值。也许尝试放置“myusername”(这是您的变量,包含用户名帖子中的值)而不是“username”。我以前从未使用过 session_register(),所以我可能是错的。
    • 根据php手册, session_register() 无论如何都被弃用了。我会尝试改用 $_SESSION["username"] = $myusername 。我希望这会有所帮助!
    • 很抱歉继续说,但我刚刚注意到别的东西。您必须在要使用会话变量的每个页面上调用 session_start() 。它也需要在任何 html 输出之前进行。
    • 感谢您的持续帮助。我已经尝试了您建议的所有内容,但如果我输入错误,它甚至不会说用户名是错误的。我什至不确定 PHP 是否正常工作。
    【解决方案2】:

    将输出发送到浏览器后,您不能使用 header(),因此您需要将 php 内容放在 html 标记之前。

    顺便说一句,我不知道您的服务器是如何设置的,但我认为您的注册链接不会起作用(我假设 public_html 是服务器的根...)。

    编辑: 我看到您打开了输出缓冲,但没有刷新缓冲区。这样做有什么具体原因吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-14
      • 2014-01-11
      • 2013-05-14
      • 2019-12-30
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 2018-12-30
      相关资源
      最近更新 更多