-1

我需要帮助来为我的网站创建登录并将其连接到数据库。

这是php代码

<?php
 session_start();
 include("dbconnect.php");
 $numrows=0;
 $member=$_GET['Membership_Number'];
 $password=$_GET['Password'];
 $query="select First_name, Last_name, Membership_Number from members where (Membership_Number='$member' && Password='$password')";
 $link = mysql_query($query);
 if (!$link) {
  die('login error');
 }
 $numrows=mysql_num_rows($link);
 if ($numrows>0){  // authentication is successfull
  $row = mysql_fetch_array($link, MYSQL_ASSOC);
  $_SESSION['user']['first_name']=$row['fname'];
  $_SESSION['user']['last_name']=$row['lname'];
  $_SESSION['user']['email']=$row['email'];
  header("location:index.php");
 } else {
  header("location:../invalid.php");  // authentication was unsuccessfull
 }
?>

这是 HTML 代码

<form id="jjjj" method="post" action="Send_log_details.php" class="register">
        <ul>
            <li>
            Membership Number:<br>
            <input type="text" id="Membership_Number" name="Membership_Number">
            </li>
            <li>
            Password:<br>
            <input type="password"  id="Password" name="Password" value="Login">
            </li>
            <li>

            <input type="submit" name="register" value="Login" onclick="logMeIn()">             
            </li>
        </ul>
        </form>

有人可以解释为什么这段代码不起作用

谢谢

4

2 回答 2

2
  1. 你有表格method=post和你正在使用的 php $_GET
  2. 您的查询不正确。

正如@njk 也评论的那样,

请不要在新代码中使用 mysql_* 函数。它们不再被维护并被正式弃用。

于 2013-01-11T15:51:48.510 回答
0

首先,$_GET不包括 POSTed 表单参数的值。$_POST$_REQUEST将起作用,尽管后者可能不明智使用,因为根据 PHP 配置,它可能包含 cookie 值。

第二,$query是无效的SQL。特别是,SQL 使用AND而不是&&. 此外,如果您使用 MYSQL_ASSOC 选项,列名必须与代码的其余部分匹配:

$sqlMember = mysql_real_escape_string($member);
$sqlPassword = mysql_real_escape_string($password);
$query="select First_name fname, Last_name lname, Email email, Membership_Number from members where (Membership_Number='$sqlMember' and Password='$sqlPassword')";

mysql_real_escape_string()用于防止SQL 注入。如果您使用的是 MySQLi 扩展或 PDO,您将准备好可用的语句功能,您应该使用它。

顺便说一句,对您的应用程序的其他攻击,例如登录 CSRF 和会话固定,可能是可能的。

于 2013-01-11T16:20:03.760 回答