2013-05-27 2 views
0

Я довольно запутан с моей проблемой входа php mysql прямо сейчас. Вот мой код.PHP Пример использования MySQL MySQL Ошибка

Пожалуйста, не предлагайте мне использовать mysqli и PDO, потому что я новичок и в настоящее время знает только, как использовать функции mysql в php. Я исправлю это позже. так что просто взгляните на код и скажите мне, что не так с кодом аутентификации.

login.php

<?php 
session_start(); 
if($_SERVER["REQUEST_METHOD"] == "POST") { 
    $username=addslashes($_POST['username']); 
    $password=addslashes($_POST['password']); 

    //connect to database 
    $con=mysql_connect("localhost","","") or die(); 
    $db=mysql_select_db("dashboard") or die(); 

    //execute query 
    $query ="SELECT username, password from `login` where username=$username"; 
    $result=mysql_query($query); 

    if($username=='username' && $password=='password') { 
     $_SESSION['username']=$username; 
     header("Location:dashboard.php"); 
    } else { 
     echo "You got credentials wrong"; 
    } 
} 
?> 

<form method="post" action="<?php htmlspecialchars("PHP_SELF"); ?>"> 

<label>Username :</label><input type="text" name="username"></br> 
<label>Password:</label><input type="password" name="password"></br> 
<br/> 
<input type="submit" value="submit"></br> 
</form> 

dashboard.php

<?php 
session_start(); 
echo "Welcome ". $_SESSION['username']; 
?> 
<a href="logout.php">Logout</a> 

logout.php

<?php 
session_destroy(); 
header("Location:login.php"); 
?> 

Ошибка на странице было:

Не лед: Undefined индекс: пароль в /home/lampstack/apache2/htdocs/dashboard/login.php на линии 23

Line 23 Код

if($username=='username' && $password=='password') 
+2

Какая ошибка? – 0x1gene

+1

Вы не сказали нам проблему. У вас есть пара, хотя ... Включая совместимость SQL Injection и PHP 5.5. – Martin

+0

Как говорит Мартин: есть пара проблем с безопасностью. Но на ваш вопрос: я думаю, вместо 'if ($ username = 'username' && ...', вы должны использовать оператор '=='. – ConcurrentHashMap

ответ

0

На первом этапе в запросе

$query ="SELECT username, password from `login` where username=$username"; 

Вы должны окружать переменное имя пользователя с цитатой, так как я должен это не поле целого

$query ="SELECT username, password from `login` where username='$username'"; 

Тогда у Вас есть ошибка в вашем if заявлении, и вы не принести никакого результата из вашего запроса, так что вы должны проверить извлеченной строки или любого mysql_num_row составляет больше чем 0

$result=mysql_query($query); 

if($row = mysql_fecth_array($result)) 
{ 
    $_SESSION['username']=$username; 
    header("Location:dashboard.php") 
} 

Я хотел бы отметить, что ваш код сильно уязвим для инъекций mysql

+0

Можете ли вы объяснить, как избежать внедрения sql в моем коде? – Ryu

+0

@ryu вам следует переключиться на pdo и использовать подготовленный оператор, чтобы избежать риска, так или иначе, чтобы проверить 'mysql_real_escape_string' – Fabio