0

我是编程初学者,我评论了我不理解代码的行。并且与数据库的连接正常,所以我不明白为什么它不起作用。

这里是 LOGIN.PHP

<?php

include("connectiondbs.php");
include("javascript.js");
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$u=$_POST['username'];
$p=$_POST['password'];

$sql="SELECT userID FROM users WHERE login='$u' and password='$p'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);

$active=$row['active'];            //I AM NOT SURE ABOUT THIS ONE

$count=mysql_num_rows($result);

if($count==1)
{
session_register("username");
session_register("password");     //HAS TO BE THE PASSWORD IN REGISTER?
$_SESSION['login_user']=$u;

header("location:succesfulllogin.php");  // HAS TO BE THIS FILE? OR I CAN GO TO THE MENU.HTML RIGHT NOW

}
else {
echo "Wrong Username or Password";
}}
?>

<form action="" method="post">
<label>Login :</label>
<input type="text" name="username"/><br />
<label>Password :</label>
<input type="password" name="password"/><br/>
<input type="submit" value=" Submit "/><br />
</form>

JAVASCRIPT.JS

<script Language="JavaScript">
    <!-- 
        function check_empty_field()
        {
        if (form.username.value == "" || form.password.value == "")
        {
           alert("Please fill in the password or login field.");
           return (false);
        }
        return (true);
        }
        -->
</script>

成功登录.php

<?php
session_start();
if(!session_is_registered(username)){
header("location:login.php");
}
else{
header ("location:menu.html");
}
?>
4

2 回答 2

1

你不必去successfullogin.php......只要你把它放在你的 menu.html 文件的顶部......这意味着你可以把它重命名为menu.php文件。这只会阻止人们在没有登录的情况下直接访问 menu.php....

<?php
session_start();
if(!session_is_registered(username)){
header("location:login.php");};?>

而且...不,您不必将密码存储在会话中,除非稍后在您网站的其他地方读取密码。检查以确保,但我怀疑它是。您可能不需要存储它。所以你可能可以删除这条线....

    session_register("password");     //HAS TO BE THE PASSWORD IN REGISTER?

你对这条线持怀疑态度也是正确的......似乎没有做任何事情......你也可以删除它......

   $active=$row['active'];            //I AM NOT SURE ABOUT THIS ONE
于 2013-06-16T19:13:26.557 回答
1

首先,您的 javascript 没有运行。您正在创建函数,但没有调用它,并且它不会以任何方式与 PHP 交互。您可以通过将表单标签更改为:

<form action="login.php" method="post" onsubmit="return check_empty_field()">

现在,只要您提交表单,就会运行 check_empty_field 函数。如果它返回 true,则提交表单并运行 PHP。否则,它不会。对于函数,将其更改为这个(我放入了一些 jQuery,因为它使它更容易 10 倍,如果你是编程新手,你一定要研究它):

<script Language="JavaScript">
  <!--
    function check_empty_field()         // This is called when the submit
    {                                    // button is pressed
      if (form.username.value == "" || form.password.value == "")
      {
        alert("Please fill in the password or login field.");
        return false;                    // This doesn't submit the form
      }
      else
      {
        return true;                     // This submits the form
      }
    }
  -->
</script>

jQuery 让这一切变得更容易,这就是我添加它的原因。你可以在这里找到更多关于它的信息。当然,您必须将其放在页面顶部,以使 jQuery 工作:

<script language="javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.1.min.js"></script>

这将从 Microsoft CDN 获取 jQuery 定义。还是比较靠谱的。不过,最好将 jQuery 放在您的网站上,然后放入文件的路径。

接下来,PHP 有一些问题。有些已经被别人覆盖了,注意前面的回答,但要指出几个问题,session_register不再使用了。现在您使用$_SESSION['variablename'] = 'value'. 您还需要担心其他问题,例如验证等。你应该谷歌那个。

如果您想进一步了解其中的任何内容,请随时发表评论。我还可以为您提供资源,以便您可以了解有关我使用的代码的不同部分的更多信息。

于 2013-06-16T22:09:14.917 回答