无法登入

时间:2011-03-07 07:34:43

标签: php login

dbConfig.php

<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die;

$dbname = 'charitydatabase';
mysql_select_db($dbname);
echo("Successfully Connected to ". $dbname . " !");
mysql_query($sql);

?>

register.php

<?php

        // dbConfig.php is a file that contains your
        // database connection information. This
        // tutorial assumes a connection is made from
        // this existing file.
        include ("dbConfig.php");


//Input vaildation and the dbase code
        if ( $_GET["op"] == "reg" )
  {
  $bInputFlag = false;
  foreach ( $_POST as $field )
        {
        if ($field == "")
    {
    $bInputFlag = false;
    }
        else
    {
    $bInputFlag = true;
    }
        }
  // If we had problems with the input, exit with error
  if ($bInputFlag == false)
        {
        die( "Problem with your registration info. "
    ."Please go back and try again.");
        }

  // Fields are clear, add user to database
  //  Setup query
  $q = "INSERT INTO `dbuser` (`username`,`password`,`email`) "
        ."VALUES ('".$_POST["username"]."', "
        ."PASSWORD('".$_POST["password"]."'), "
        ."'".$_POST["email"]."')";
  //  Run query
  $r = mysql_query($q);

  // Make sure query inserted user successfully
  if ( !mysql_insert_id() )
        {
        die("Error: User not added to database.");
        }
  else
        {
        // Redirect to thank you page.
        Header("Location: register.php?op=thanks");
        }
  } // end if


//The thank you page
        elseif ( $_GET["op"] == "thanks" )
  {
  echo "<h2>Thanks for registering!</h2>";
  }

//The web form for input ability
        else
  {
  echo "<form action=\"?op=reg\" method=\"POST\">\n";
  echo "Username: <input name=\"username\" MAXLENGTH=\"16\"><br />\n";
  echo "Password: <input type=\"password\" name=\"password\" MAXLENGTH=\"16\"><br />\n";
  echo "Email Address: <input name=\"email\" MAXLENGTH=\"25\"><br />\n";
  echo "<input type=\"submit\">\n";
  echo "</form>\n";
  }
        // EOF
        ?>

的login.php

    <?php
        session_start();
        // dBase file
        include "dbConfig.php";

        if ($_GET["op"] == "login")
  {
  if (!$_POST["username"] || !$_POST["password"])
        {
        die("You need to provide a username and password.");
        }

  // Create query
  $q = "SELECT * FROM `dbuser` "
        ."WHERE `username`='".$_POST["username"]."' "
        ."AND `password`=PASSWORD('".$_POST["password"]."') "
        ."LIMIT 1";
  // Run query
  $r = mysql_query($q);

  if ( $obj = @mysql_fetch_object($r) )
        {
        // Login good, create session variables
        $_SESSION["valid_id"] = $obj->id;
        $_SESSION["valid_user"] = $_POST["username"];
        $_SESSION["valid_time"] = time();

        // Redirect to member page
        Header("Location: member.php");
        }
  else
        {
        // Login not successful
        die("Sorry, could not log you in. Wrong login information.");
        }
  }
        else
  {
//If all went right the Web form appears and users can log in
  echo "<form action=\"?op=login\" method=\"POST\">";
  echo "Username: <input name=\"username\" size=\"15\"><br />";
  echo "Password: <input type=\"password\" name=\"password\" size=\"8\"><br />";
  echo "<input type=\"submit\" value=\"Login\">";
  echo "</form>";
  }
        ?>

问题1: 能够将用户添加到数据库。但是在调试代码后我收到错误信息:

  

警告:无法修改标头信息 - 已在第49行的C:\ xampp \ htdocs \ Login \ register.php中发送的标头(输出从C:\ xampp \ htdocs \ Login \ dbConfig.php:4开始)< / p>

问题2:  并在数据库中保存密码字段时出错。

Problem3:

无法登录。

请帮我解决上面的问题,tq!

2 个答案:

答案 0 :(得分:2)

从dbConfig.php中删除echo,在echo之后不能使用header()函数。 (我们用于在register.php中重定向的标题)

答案 1 :(得分:1)

解决方案

  1. 在页面顶部使用ob_start(),您可以在其中写header('');
  2. 不要使用mysql函数PASSWORD(),USE md5()或任何其他解码的php函数
  3. 将密码存储到已归档到datatype且长度为varchar
  4. 的密码的数据库集255

    这意味着什么

    if (!$_POST["username"] || !$_POST["password"])
            {
            die("You need to provide a username and password.");
            }
    

    改为写

    if (empty($_POST["username"]) || empty($_POST["password"]) )
     {
            die("You need to provide a username and password.");
     }
    

    并照顾 mysql injection

相关问题