Как проверить, был ли сделан пост или нет? - PullRequest
0 голосов
/ 08 марта 2011
if(isset($_POST["email"]))
{
$email = mysql_real_escape_string($_POST["email"]); /* Line 10 */
$password = mysql_real_escape_string($_POST["password"]);

$result = mysql_query("SELECT password, id FROM users WHERE email = '$email'");

if (!$result)
    {
        die('Invalid query: ' . mysql_error());
    }

$row = mysql_fetch_assoc($result);

if($row['password'] == $password)
    {
        ini_set("session.cookie_lifetime","360000");
        session_start();
        $_SESSION['valid_user'] = $row['id'];
        $_SESSION['email'] = $row['email'];
        mysql_close($link);
        header('Location: index.php');
    }


mysql_close($link);
}

Я не делаю никаких сообщений, но он говорит, что $email не определен в строке 10. Почему? Я использую EasyPHP .

Примечание: неопределенный индекс: электронная почта в C: \ Program Файлы \ EasyPHP-5.3.5.0 \ WWW \ v0.3 \ модель \ login.php по линии 10

Ответы [ 3 ]

5 голосов
/ 08 марта 2011

Самый надежный метод проверки выполнения POST -

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   ... you're in a post ...
}

Проверка определенного поля формы рискованна - вы можете переименовать / удалить поле и забыть обновить форму.Но проверка этого значения $ _SERVER надежна на 100% - она ​​всегда доступна, независимо от того, каким методом был вызван скрипт.

0 голосов
/ 08 марта 2011

array() == false, так почему бы и нет:

if($_POST)
{
    // stuff
}

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

0 голосов
/ 08 марта 2011

Это говорит о том, что, поскольку массив $_POST пуст (конечно, вы не публикуете), и вы пытаетесь получить доступ к индексу email этого массива if(isset($_POST["email"])), который не существует.

Вы можете исправить это, выполнив:

if (isset($_POST['email']))
$email = mysql_real_escape_string($_POST["email"]);

Примечание : это всего лишь уведомление, и оно не повлияет на ваше приложение, поэтому я бы посоветовал вам не беспокоиться об этом, и у вас будет более чистый код. Это личное мнение проверьте, почему не стоит здесь: Как избежать isset () и empty ()

UPDATE

Добавлена ​​функция isset для предотвращения уведомления. Благодаря децезе.

...