php,登录脚本

时间:2012-03-09 20:56:42

标签: php

我是php的新手,我正在尝试编写注册脚本。我的问题是,当我尝试登录时,我看不到用户的菜单。也许问题在于会话和cookie,但我找不到它。这是我的代码的一部分:

的config.php

<?php
  oB_start(); 
  $con = mysql_connect("localhost","root","123");
  if (!$con) {
    die('Could not connect: ' . mysql_error());
  }
  mysql_select_db("9gag", $con);
  $logged = MYSQL_QUERY("SELECT * from users WHERE id='$_COOKIE[id]' AND password = '$_COOKIE[password]'"); 
  $logged = mysql_fetch_array($logged); 
?>

的login.php

<?php 
  oB_start(); 
  include("config.php"); 
  if (!$logged[username]) { 
    if (!$_POST[login]) { 
      echo("<center><form method=\"POST\"> 
            <table> 
            <tr> 
            <td align=\"right\"> 
            User: <input type=\"text\" size=\"15\" maxlength=\"25\" name=\"username\"> 
            </td> 
            </tr> 
            <tr> 
            <td align=\"right\"> 
            Password: <input type=\"password\" size=\"15\" maxlength=\"25\" name=\"password\"> 
            </td></tr><tr> 
            <td align=\"center\"> 
            <input type=\"submit\" name=\"login\" value=\"Sign in\"> 
            </td></tr><tr> 
            <td align=\"center\"> 
            <a href=\"register.php\">Sign up</a> 
            </td></tr></table></form></center>"); 
    } 
    if ($_POST[login]) { 
        $username = $_POST[username]; 
        $password = $_POST[password]; 
        $info = mysql_query("SELECT * FROM users WHERE username = '$username'") or die(mysql_error()); 

        $data = mysql_fetch_array($info); 
        if($data['PASSWORD'] != $password) { 
            echo "Wrong username or password!"; 
        }else{ 
            $query = mysql_query("SELECT * FROM users WHERE username = '$username'") or die(mysql_error()); 
            $user = mysql_fetch_array($query); 
            setcookie("id", $user['ID'],time()+(60*60*24*5), "/", ""); 
            setcookie("password", $user['PASSWORD'],time()+(60*60*24*5), "/", ""); 
        } 
    } 
} 
else { 
    echo ("<center>Welcome <b>$logged[username]</b><br /></center> 
                <a href=\"editprofile.php\">Profile</a><br /> 
                <a href=\"logout.php\">Log out</a>"); 
} 
?>

2 个答案:

答案 0 :(得分:1)

有人已经说过更改COOCKIE使用SESSION,我还没有完全理解你的表/列布局,但是我试图让你的代码变得更好,所以试试这个:)

的config.php

 <?php 
  $con = mysql_connect("localhost","root","123");
  if (!$con) {
    die('Could not connect: ' . mysql_error());
  }
  mysql_select_db("9gag", $con);
?>

的login.php

    <?php 
  session_start();
  ob_start();
  include("config.php"); 
  if (!Isset($_SESSION['id'])) { 
    if (!$_POST['login']) { 
      echo '<center><form method="POST"> 
            <table> 
            <tr> 
            <td align="right"> 
            User: <input type="text" size="15" maxlength="25" name="username"> 
            </td> 
            </tr> 
            <tr> 
            <td align="right"> 
            Password: <input type="password" size="15" maxlength="25" name="password"> 
            </td></tr><tr> 
            <td align="center"> 
            <input type="submit" name="login" value="Sign in"> 
            </td></tr><tr> 
            <td align="center"> 
            <a href="register.php">Sign up</a> 
            </td></tr></table></form></center>'; 
    } 
    if ($_POST[login]) { 
        $username = $_POST['username']; 
        $password = $_POST['password']; 
        $info = mysql_query("SELECT * FROM users WHERE username = '".$username."'") or die(mysql_error()); 

        $data = mysql_fetch_array($info); 
        if($data['password'] != $password) { 
            echo "Wrong username or password!"; 
        }else{ 
            $query = mysql_query("SELECT * FROM users WHERE username = '".$username."'") or die(mysql_error()); 
            $user = mysql_fetch_array($query); 
            $_SESSION['username']=$user['username'];
            $_SESSION['id']=$user['id'];
            $_SESSION['password']=$user['password'];
        } 
    } 
} 
else { 
    echo "<center>Welcome <b>".$_SESSION['username']."</b><br /></center> 
                <a href='editprofile.php'>Profile</a><br /> 
                <a href='logout.php'>Log out</a>"; 
} 
?>

答案 1 :(得分:0)

变量$ logged在第二个文件中为空!所以!$ logged将始终为true,第一部分将始终执行:)使用第二个文件中的cookie查看是否已记录