Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как запретить отправлять пустой POST запрос?

Как запретить отправлять пустой POST запрос?


     Все вопросы » Общие вопросы по PHP    4920

вопрос
Пытаюсь изучать php и столкнулся с проблемой, а именно с POST запросом. Дело в том, что по какой-то причине (а именно из-за моих кривых рук) при обновлении страницы происходит отправка запроса даже если я ничего не вносил в поля.

Вот код:

Ответил: golden_eagle_god


Как я думаю, лучше шаблон подключать через TPL, но всё-же...

У вас отправка происходит потому, что действие выполняется при загрузке страницы, а не при посте.
Запрос лучше выполнить после проверки пост-данных

if($login AND $pass){ //Проверяю наличие Логина и Пароля
$query  = "INSERT INTO $table SET login='$login', password='$pass'";

mysql_query($query) or die(mysql_error()); //Отправляю данные
    
mysql_close();

}


И подключение к базе данных меня как то смущает, не легче использовать запись типа:

$db->super_query("INSERT INTO $table SET login='{$login}', password='{$pass}'");

3 комментария

narkom6n
Юзер

narkom6n - -

А как сделать проверку, допустим если в базе данных уже существует такой логин, то запрещать отправку запроса?

golden_eagle_god
Юзер

golden_eagle_god - -

Примерно так, я не тестировал, но должно работать:


if($login AND $pass){ //Проверяю наличие переданного Логина и Пароля

$request = $db->super_query("SELECT * FROM {$table} WHERE login='{$login}'"); //Проверяю наличие юзера

if($request == TRUE){ //Если запрос вернул не пустой результат, то выдаём ошибку
msgbox('Ошибка','Юзер с логином <b>{$login}</b> уже существует.');
}else{
$db->super_query("INSERT INTO $table SET login='{$login}', password='{$pass}'"); // Добавляю юзера в БД
}



А вы DLE используете или другую CMS?

Похожие вопросы

наверх