-1

Web サイトのログインの作成とデータベースへの接続についてサポートが必要です。

これは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

まず、$_GETPOST されたフォーム パラメータの値は含まれません。ただし、PHP の設定によっては Cookie の値が含まれる場合があるため、後者を使用するのは賢明ではないかもしれません$_POST$_REQUEST

2 つ目は、$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 に答える