2013-09-23 5 views
0

Я все еще новичок в php и стараюсь учиться. У меня есть следующий код, и переменные $ username и password не установлены, и я на 99% уверен, что с ними ничего не случилось.PHP переменная не установлена ​​

Можете ли вы посоветовать мне, что я могу сделать, чтобы решить эту проблему. Каждый раз, когда я запускаю скрипт, я получаю имя пользователя и пароль, которые не задают сообщение (задано с инструкцией if).

<?php 
     require 'connect.inc.php'; 

     if (isset($_POST['login_button'])&&($_POST['username'])&&($_POST['password'])){ 
         $login_button = $_POST['login_button'];    
         $username = $_POST['username']; 
         $password = $_POST['password']; 

          $password_hash = md5($password); 

           if(!empty($username)&&!empty($password)){ 
            $sql = "SELECT `id` FROM `golden_acres_username` WHERE `uname`='$username' AND `password`='$password_hash'"; 
             if($sql_run = mysql_query($sql)){ 
              $query_num_rows = mysql_num_rows($sql_run); 
             } 
              if($query_num_rows==0){ 
               echo mysql_result($sql_run); 
              } 
              else if($query_num_rows==1){ 
               echo 'ok'; 
              } 
           } else { 
           echo 'You must supply a username and a password.'; 
           } 
          } 

        else { 
         echo $array; 
         echo 'Username and password are not set'; 
        } 
        ?> 
         <form class="home_logon_area" action="" method="POST"> 
         <table border="0"> 
          <tr><td colspan="2">Username: </td></tr> 
          <tr><td colspan="2"><input type="text" class="text_field" name="username" size="30"/></td></tr> 
          <tr><td colspan="2">Password: </td></tr> 
          <tr><td colspan="2"><input type="password" class="text_field " type="password" name="password" size="30"/></td></tr> 
          <tr><td valign="top"><a class="home_content_link_form" href="no_password.html"> Forgor Password </a></td> 
           <td align="right" rowspan="2"><input type="submit" name="login_button" id="login_button" value="Login"/></td></tr> 
          <tr><td><a class="home_content_link_form" href="register.php"> Register </a></td></tr> 
         </table> 
         </form> 
?> 

Спасибо заранее,

Джозеф

+2

FYI, вы широко открыты для [инъекции SQL] (HTTP : //stackoverflow.com/q/60174) –

+0

Я новое просто обучение. Я уверен, что позже смогу подробно остановиться на безопасности. На данный момент, если вы можете помочь мне в этом, это будет здорово :) – joebegborg07

+0

FYI, а) вы больше не должны использовать расширение MySQL (предпочитаете MySQLi или PDO, как с подготовленными инструкциями), b) вы не должны использовать 'md5()' для хеширования паролей (предпочитайте bcrypt или scrypt). – ComFreek

ответ

2

Изменение:

if (isset($_POST['login_button'])&&($_POST['username'])&&($_POST['password'])){ 

к:

if (isset($_POST['login_button']) && isset($_POST['username']) && isset($_POST['password'])){ 
+0

Отсутствует 'isset' для последних двух вызовов. Еще лучший способ сделать это: isset ($ _ POST ['login_button'], $ _POST ['username'], $ _POST ['password']); –

+1

Спасибо, Rich. Работал. глупый мне – joebegborg07

+1

Да, я тоже получил его;) Кстати, можно также использовать 'isset ($ _ POST ['login_button'], $ _POST ['username'], $ _POST ['password'])'. – ComFreek

Смежные вопросы