Ошибка входа в PHP / MySQL

Мне нужна помощь в создании журнала для моего сайта и подключении его к базе данных.

Это 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> 

Может кто-нибудь объяснить, почему этот код не работает

благодаря

Solutions Collecting From Web of "Ошибка входа в PHP / MySQL"

  1. У вас есть форма с method=post и в php вы используете $_GET .
  2. Ваш запрос неверен.

Поскольку @njk также прокомментировал,

Пожалуйста, не используйте функции mysql_ * в новом коде. Они больше не поддерживаются и официально устарели.

Прежде всего, $_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 и фиксация сеанса.