[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Основы PHP. Не видно переменные.
Genco
Сунулся недавно в PHP,раньше пользовался совсем другими языками. Набросал тренировочный пример - ошибки, перепечатал из книжки - опять. Теперь сижу на измене. Суть такая: когда в документе описана html-форма,тут же вставлен скрипт-обработчик, то при первом запуске не видит переменные,ругается на их отсутствие. Метод POST. Логично,кстати,ведь сначала нужных элементов в массиве $_POST и не будет,но везде пишется,что и так должно работать,если через скрытое поле сделать проверку. Вот я о чем примерно:

if($_POST['sent']==1)
{
/*что-то делаем тут*/
$_POST['name']=str_replace('~','',strip_tags(trim($_POST['name'])));
$_POST['betreff']=str_replace('~','',strip_tags(trim($_POST['betreff'])));
$_POST['message']=str_replace('~','',strip_tags(trim($_POST['message'])));
/*.....бла бла.....*/
if($_POST['name'] AND $_POST['betreff'] AND $_POST['message'])
{
/* что то ещё*/
}
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<
input type="hidden" name="sent" value="1">
/*.....*/
</form>

Запускаю - "Notice: ..." нет,говорит,таких полей. Как убрать плохой эффект сей? Подскажите,коли не сложно.

З.Ы. В какой раздел спросить про установку MySQL,а то апач её не видит,несмотря на конфиги?



Спустя 44 минуты, 32 секунды (20.02.2010 - 00:30) sergeiss написал(а):
1. Про отсутствие элементов.
if( !empty( $_POST['name'] ) ) - тогда ясно, что в ПОСТе с именем name что-то было передано, и мы можем что-то делать.
Проверять надо все без исключения параметры!!! И сразу же записывать в переменные то, что было получено.
Например, так можно:
$name=!empty( $_POST['name'] ) ? $_POST['name'] : false;

В переменную $name запишем значение из $_POST['name'] - если там что-то имеется. Иначе - в $name будет записано значение false.

2. Про настройку (установку) MySQL - сюда http://phpforum.ru/index.php?showforum=25 или, скорее, сюда http://phpforum.ru/index.php?showforum=10.

Спустя 49 минут, 40 секунд (20.02.2010 - 01:20) Genco написал(а):
Ооо,пасиба большое. Значит,в книге кривовато сделали,теперь куда лучше работает.

Спустя 5 часов, 21 минута, 49 секунд (20.02.2010 - 06:42) twin написал(а):
sergeiss
Цитата
$name=!empty( $_POST['name'] ) ? $_POST['name'] : false;


В переменную $name запишем значение из $_POST['name'] - если там что-то имеется.

А если там нуль?

Спустя 4 часа, 41 минута, 43 секунды (20.02.2010 - 11:23) sergeiss написал(а):
Цитата (twin @ 20.02.2010 - 07:42)
А если там нуль?
Ну и что, "если там нуль"? Нуль (для целых чисел) - это, чаще всего, отсутствие данных. Так что логика не нарушается. Для целых можно не false написать, а 0.

Спустя 1 час, 25 минут, 14 секунд (20.02.2010 - 12:49) twin написал(а):
Не прав ты. Переменная называется name, значит имя. То есть строка. А если у меня имя 0?

Спустя 5 минут, 21 секунда (20.02.2010 - 12:54) sergeiss написал(а):
twin - ты же сам агитируешь за использование в такой ситуации empty, а не isset wink.gif

И вообще. Не нравится - предложи свой вариант.

Спустя 2 часа, 49 минут, 19 секунд (20.02.2010 - 15:43) twin написал(а):
Не правда ваша... Я агитирую только в том случае, когда нужно исключить пустоту и ноль в том числе. Если возможен ноль, то тогда так лучше:

$name = (isset( $_POST['name'] ) && $_POST['name'] != '')? $_POST['name'] : null;

Спустя 6 часов, 16 минут (20.02.2010 - 21:59) Genco написал(а):
Ччерт, и такие проверки в каждое первое упоминание переменной втыкать? Как то геморно получится,даже если в функции вынести((

Спустя 56 минут, 2 секунды (20.02.2010 - 22:55) sergeiss написал(а):
Цитата (Genco @ 20.02.2010 - 22:59)
и такие проверки в каждое первое упоминание переменной втыкать?

Типа того, что да wink.gif

Но зато один раз проверил - и потом уже пользуешься во всём скрипте проверенной переменной. Иначе - придется делать проверку каждый раз, когда нужна переданная через POST информация.

Спустя 48 минут, 2 секунды (20.02.2010 - 23:43) Winston написал(а):
Цитата (Genco @ 20.02.2010 - 00:20)
Значит,в книге кривовато сделали,теперь куда лучше работает.

Я никогда не видел сложного примера из книги который был бы на 100% правильный. А то, что в скрипте ошибки, так это, как бы задание, чтобы на только копипастил, но и думал головою.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.