Простой вход в PHP не будет подключаться к БД - PullRequest
1 голос
/ 25 июля 2011

Ниже приведен код для входа в систему и подключения к базе данных. Я настроил базу данных, пользователя и пароль владельца базы данных, таблицу «члены» базы данных и пользователя члена базы данных. Первый фрагмент кода - это просто HTML-форма для входа в систему [это индексный файл], второй - PHP-файл [checklogin.php], который должен соединить указанного пользователя с базой данных. Проблема в том, что все, что введено в html-форму, позволит пользователю перейти на следующую страницу со словами «эй, пользователь, ты вошел в систему», даже если этого пользователя нет в таблице участников. У меня такое ощущение, что они ДЕЙСТВИТЕЛЬНО не соединяются, это просто повторяет это. - Вся информация о БД отключается с помощью ++++++

    <html>
    <form action='checklogin.php' method='POST'
    <strong>username:</strong><br />
    <input name="myusername" type="text" id="myusername"><br />
    <strong>password:</strong><br />
    <input name="mypassword" type="password" id="mypassword"><br />
    <input type="submit" name="Submit" value="Login">
    </form>
    </html> 

    <?php
    $host="localhost"; 
    $username="++++++"; 
    $password="++++++"; 
    $db_name="++++++"; 
    $tbl_name="members"; 

    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");
    $myusername=$_POST['myusername'];
    $mypassword=$_POST['mypassword'];
    echo "hey, " . $myusername . ", you are correctly signed in."
    ?>

Спасибо. Я собираюсь добавить элементы безопасности после того, как все получится. В конечном итоге пользователь войдет в систему и получит право перейти в свой профиль.

Ответы [ 3 ]

3 голосов
/ 25 июля 2011

Ну, вы не выполняете никаких запросов и не проводите какие-либо проверки, так что, очевидно, вы просто напечатаете это утверждение, несмотря ни на что.Я думаю, что вы хотите что-то подобное (но это сильно зависит от структуры вашей таблицы)

$myusername = mysql_real_escape_string($_POST['myusername']);
$mypassword = mysql_real_escape_string($_POST['mypassword']);
$query = "SELECT * FROM $tbl_name where username=$myusername AND password=$mypassword";
$result = mysql_query($query);
$user = mysql_fetch_array($result);
if ($user) {
  echo "hey, " . $myusername . ", you are correctly signed in."
} else {
  echo "Not signed in."
} 

Это проверит таблицу членов, чтобы увидеть, есть ли в таблице пользователь с таким именем / паролем.

Также обратите внимание, что я использую mysql_real_escape_string для переменных post, которые помогут защитить от атак SQL-инъекций.

2 голосов
/ 25 июля 2011

mysql_connect() возвращает ресурс соединения, который необходимо передать вызову mysql_query(), вместе с SQL-запросом, чтобы определить, соответствуют ли учетные данные пользователю в базе данных.

$con = mysql_connect($server, $dbuser, $dbpass);
mysql_select_db($db_name)

ВашЗапрос должен проверить БД, чтобы увидеть, существует ли $myusername и что пароль для $myusername равен $mypassword.Вы упомянули, что имя таблицы было членов.

$user = mysql_query("select password from members where username = '" . 
    mysql_real_escape_string($_POST['myusername']) . "'", $con);

if(mysql_num_rows($user) == 0) {
    // Username not found
}

$user = mysql_fetch_assoc($user);
if($_POST['password'] != $user['password']) {
    // Password does not match
}

Фактический запрос зависит от схемы вашей базы данных.

0 голосов
/ 11 июля 2012

Вы подключились только к базе данных, используя mysql_connect(). Это выглядит хорошо. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB");

Но вам нужно проверить пользователя и отобразить имя пользователя.

$username = mysql_real_escape_string(strip_tags($_POST['username']));
$password=md5(mysql_real_escape_string(strip_tags($_POST['password'])));
$query="select * from login1 where username='$username' AND password='$password'";
$result=mysql_query($query);
if(mysql_num_rows($result)!=1)
{
//If the username or password wrong 
}
else
{
//Username and password correct
$row=mysql_fetch_array($result);
echo "hey, " . $row['username'] . ", you are correctly signed in."
}

Посмотрите на этот пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...