簡體   English   中英

需要php登錄腳本幫助。 服務器錯誤,有什么問題?

[英]php login script help needed. Server error, what's the problem?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="jmtoday" class=" no_js">
<head>
    <title>Login | JM Today </title>
    <link href="Mainstyles.css" type="text/css" rel="stylesheet" ></link>
</head>
<body>
    <?php include("header.php"); ?>
    <?php include("navbar.php"); ?>
    <div id="wrap">


        <?php 
        checklogin();
        $check=checklogin();
        if($check ==3){
            confirmcookie($_SESSION['username'], $_SESSION['password']);
        }   

        ?>

        <?php

        $conn=mysql_connect("localhost", "***", "***") or die(mysql_error());
        mysql_select_db('jmtdy', $conn) or die(mysql_error());

        function checklogin(){
            if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){

            $_SESSION['username'] = $_COOKIE['cookname'];
            $_SESSION['password'] = $_COOKIE['cookpass'];
            return 3;
            }

            elseif(isset($_POST['sublogin'])){
                if(isset($_POST['user']) && isset($_POST['pass'])){
                    $user=mysql_escape_string($_POST['user']);
                    $pass=mysql_escape_string($_POST['pass']);
                    $result=mysql_query("select password from users where username=$user and active='1'");
                }

                else{
                    die('<p class="statusmsg">You didn\'t fill in the required fields.</p>');
                }   

                if(!$result || (mysql_num_rows($result) < 1)){
                    die('<p class="statusmsg">The username you entered is incorrect, or you haven\'t yet activated your account. Please try again.</p>');
                }

                $dbarray = mysql_fetch_array($result);
                $dbarray['password']=stripslashes($dbarray['password'];
                $password=stripslashes($pass);
                if($dbarray['password'] != $password)){
                    die('<p class="statusmsg">The password is incorrect. Please try again.</p>');   
                }

                $_SESSION['username']=$user;
                $_SESSION['password']=$password;
                if(isset($_POST['remember']){
                    setcookie("cookname", $_SESSION['username'], time()+60*60*24*100, "/");
                setcookie("cookpass", $_SESSION['password'], time()+60*60*24*100, "/");
        }
      }
        else{
            die('<p class="statusmsg"> You came here by mistake, didn\'t you? </p>');
        }
      }

      function confirmcookie($username, $password){

        $result = mysql_query("select password from users where username = '$username'");

        if(!$result || (mysql_numrows($result) < 1)){
            unset($_SESSION['username']);
            unset($_SESSION['password']);
            die('<p class="statusmsg">The username you entered is incorrect or you have set an incorrect cookie</p>');
        }

        $dbarray = mysql_fetch_array($result);
        $dbarray['password']  = stripslashes($dbarray['password']);
        $password = stripslashes($password);

        if($password!=$dbarray['password']{
            unset($_SESSION['username']);
            unset($_SESSION['password']);
            die('<p class="statusmsg">The password you entered is incorrect or you have set an incorrect cookie.</p>'); 
        }
        }



        ?>
</div>
</body>

</html>

謝謝大家,還有一個問題。 我將這段代碼添加到了標簽的正下方,標簽的上方,但似乎沒有顯示出來。 請你幫助我好嗎?

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="jmtoday" class=" no_js">
<head>
    <title>Login | JM Today </title>
    <link href="Mainstyles.css" type="text/css" rel="stylesheet" ></link>
</head>
<body>
<div class="container">
    <?php include("header.php"); ?>
    <?php include("navbar.php"); ?>

    <div id="wrap">


        <?php 
        $check=checklogin();
        if($check == true){
            confirmcookie($_SESSION['username'], $_SESSION['password']);
        }   

        ?>

        <?php

        $conn=mysql_connect("localhost", "***", "***") or die(mysql_error());
        mysql_select_db('jmtdy', $conn) or die(mysql_error());

        function checklogin() {
            if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){

            $_SESSION['username'] = $_COOKIE['cookname'];
            $_SESSION['password'] = $_COOKIE['cookpass'];
            return true;
            }

            elseif(isset($_POST['sublogin'])){
                if(isset($_POST['user']) && isset($_POST['pass'])){
                    $user=mysql_escape_string($_POST['user']);
                    $pass=mysql_escape_string($_POST['pass']);
                    $result=mysql_query("select password from users where username='$user' and active='1'");
                }

                else{
                    die('<p class="statusmsg">You didn\'t fill in the required fields.</p>');
                }   

                if(!$result || (mysql_num_rows($result) < 1)){
                    die('<p class="statusmsg">The username you entered is incorrect, or you haven\'t yet activated your account. Please try again.</p>');
                }


                if($dbarray['password'] != $password){
                    die('<p class="statusmsg">The password is incorrect. Please try again.</p>');   
                }
                $dbarray = mysql_fetch_array($result);
            $dbarray['password']=stripslashes($dbarray['password']);
            $password=stripslashes($pass);
                $_SESSION['username']=$user;
                $_SESSION['password']=$password;
                if(isset($_POST['remember'])){
                    setcookie("cookname", $_SESSION['username'], time()+60*60*24*100, "/");
                setcookie("cookpass", $_SESSION['password'], time()+60*60*24*100, "/");
        }
      }
        else{
            die('<p class="statusmsg"> You came here by mistake, didn\'t you? </p>');
        }

      } 


      function confirmcookie($username, $password){

        $result = mysql_query("select password from users where username = '$username'");

        if(!$result || (mysql_numrows($result) < 1)){
            unset($_SESSION['username']);
            unset($_SESSION['password']);
            die('<p class="statusmsg">The username you entered is incorrect or you have set an incorrect cookie</p>');
        }

        $dbarray = mysql_fetch_array($result);
        $dbarray['password']  = stripslashes($dbarray['password']);
        $password = stripslashes($password);

        if($password!=$dbarray['password']){
            unset($_SESSION['username']);
            unset($_SESSION['password']);
            die('<p class="statusmsg">The password you entered is incorrect or you have set an incorrect cookie.</p>'); 
        }
        }



        ?>
        </div>
<div class="footer"><p class="copyright">JMToday &copy; 2011</p><p class="right">A Samir Ghobril Production</p></div>
</div>
</body>

</html>

這是頁腳的Mainstyle.css:

div.footer
{
    background-color: #009933;
    padding: 0.1em;
    color: white;
    clear: left;
    }
p.copyright
{
    float: left;
    width: 320px;
    font-size: 10px;
    }
    p.right
    {
        margin-left: 190px;
        font-size: 10px;
        }

不知道錯誤是什么(因為你沒有指定它),但是嘗試select password from users where username=$user and active='1'更改SQL查詢,以select password from users where username='$user' and active='1' (不是$user周圍的引號)。

同樣,從您的方法中返回比“ 3”更好的東西。 在幾個月的時間里,你會回來想知道“3”你到底意味着什么。

右括號缺少第51行。

(該錯誤應顯示在您的Web服務器日志中)。

  $dbarray['password']=stripslashes($dbarray['password'];

應該

  $dbarray['password']=stripslashes($dbarray['password']);

@Samir Ghobril:更新您使用這些規則發布的Mainstyles.css部分 -

div.footer
{
    background-color: #009933;
    clear: both;
    color: white;
    overflow: hidden;
    padding: 0.1em;
}
p.copyright
{
    float: left;
    font-size: 10px;
    width: 120px;
}
p.right
{
    float: right;
    font-size: 10px;
    width: 120px;
}

您還應該使用以下命令更新HTML <head>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
    <title>Login | JM Today </title>
    <link href="Mainstyles.css" type="text/css" rel="stylesheet">
</head>

這樣它將驗證您使用的DOCTYPE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM