2013-09-27 2 views
-2

Я все еще новичок и пытаюсь изучить php. У меня есть форма, и каждый раз, когда я запускаю ее, я получаю сообщение об ошибке, что переменная не была установлена, когда они должны быть. Я определенно чего-то не хватает. Пожалуйста, объясните, почему почему переменная $ _POST ['login_button'] не установлена ​​в первый раз, когда я запускаю страницу?Не задано при первом открытии страницы

Код можно найти ниже:

<?php 

require 'connect.inc.php'; 

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

     $login_button = $_POST['login_button'];    
     $username = $_POST['username']   ; 
     $password = $_POST['password'];   
     $password_hash = md5($_POST['password']);   

      if(!empty($username)&&!empty($password)){     
      $sql = "SELECT `id` FROM `golden_acres_username` WHERE `uname`='$username' AND '".$password_hash."'";    
       if($sql_run = mysql_query($sql)){   
        $query_num_rows = mysql_num_rows($sql_run); 
       }  
        if($query_num_rows==0){  
         echo'User name and password are incorrect';  
         }    
        else if($query_num_rows==1) 
         { 
         echo 'Username and password are correct'; 
         } 
        } 

      else             
      {      
      echo 'Please fill in user name and password';      
      } 
    }  
    else 
    {       
    echo'Fields are not set';       
    }       
?>          
<form class="home_logon_area" action="test.php" method="POST"> 
    Username: 
    <input type="text" name="username" /> 
    Password: 
    <input type="password" type="password" name="password"/> 
    <input type="submit" name="login_button"> 
</form> 

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

Джозеф

+0

Если форма не отправлена, это правильно отразится на ней, и вы должны заполнить ее. По крайней мере, код такой. Поместите 'if (! Isset ($ _ POST ['login_button'])) {...' в правильные строки. Но я боюсь, что вы не сможете. – djot

+0

В первый раз, когда я запускаю код, я получаю сообщение о том, что «Поля не установлены (последняя строка моего php-кода), однако я бы хотел удалить это и установить переменные в первую очередь. – joebegborg07

+0

** Построение SQL-операторов с внешними переменными позволяет полностью открыть атаки SQL-инъекций. ** Кроме того, любые входные данные с одинарными кавычками в нем, такие как имя «O'Malley», взорвут ваш SQL запрос. Пожалуйста, узнайте об использовании параметризованных запросов, желательно с модулем PDO, для защиты вашего веб-приложения. У http://bobby-tables.com/php есть примеры, чтобы вы начали, и [этот вопрос] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in- php) имеет много примеров. –

ответ

1

переменная $ _POST устанавливается на сервер, чтобы захватить содержание данных, посланный браузером в рамках формы POST-действия. Когда страница изначально загружена, браузер только выполнил/запросил вызов GET для содержимого страницы без отправки запроса POST.

Надеюсь, что это поможет!

2

$_POST содержит результат предоставления формы. Если форма еще не была представлена, она не будет содержать ничего.

Ваш скрипт работает нормально; удалите echo 'Fields are not set'; или используйте эту строку для кода, который должен только запускать, если форма еще не отправлена.

1

Это просто понять ;-)

  • Первый раз phpscript выполняется, чтобы получить форму

    Так что не будет никакой информации вообще (посетитель является новым и не видели форма раньше)

  • Затем пользователь заполняет форму и нажмите кнопку Отправить

    форма связана с той же стороны, так что s AME phpscript запускается на выполнении снова

  • Теперь вы формульные значения передаются, и вы можете Асесс их по $ _POST

Для получения дополнительной информации смотрите на php.net

0

Удалить последнюю else из кода и обновления форма с этим

<form class="home_logon_area" action="test.php" method="POST"> 
    Username: 
    <input type="text" name="username" required /> 
    Password: 
    <input type="password" type="password" name="password" required/> 
    <input type="submit" name="login_button"> 
</form> 
Смежные вопросы