![]() |
0 Всего найдено: 35
mrArmstrong
Сообщение
02/04/2011 07:34
Копия темы
Запоминание значения textarea Как реализовать это в форме обратной связи в случае ее перезагрузки? (например, в случае незаполнения других полей). Данная попытка неудачна. Может, как-то иначе? <textarea name="message" rows="8" cols="37" value="<?php echo $_SESSION['message'];?>" style="font-family: Trebuchet MS; font-size: 10pt"></textarea></td></tr> Может быть, в этом дело..? $message = substr( $_POST['message'], 0, 64 ); Заранее благодарен!
anonimouse1488
Сообщение
02/04/2011 07:36
Копия темы
<textarea name="message" rows="8" cols="37" style="font-family: Trebuchet MS; font-size: 10pt"><?php echo(isset($_POST["message"]) ? htmlspecialchars($_POST["message"]) : ""); ?></textarea> Сессия не нужна у textarea нет аттрибута value
anonimouse1488
Сообщение
02/04/2011 07:52
Копия темы
а кнопка есть <input type="submit" />? и обработчик должна быть таже самая страница <form action="<?php echo($_SERVER["PHP_SELF"]); ?>" method="post"> </form>
RiDDi
Сообщение
02/04/2011 08:03
Копия темы
ну поставьте вверху <?print_r($_POST))?> посмотрите передаются ли вообще у Вас данные )
vah-smile
Сообщение
02/04/2011 08:05
Копия темы
Здесь вполне можно обойтись и без сессий! Вы же полюбому передаете либо POST либо GET запрос при отправке! В случае неудачи можно сделать кнопку на предыдущую форму с передачей POST/GET параметра для TEXTAREA! Для TEXTAREA прописать что-то такого: <?php if ($_POST['message']) $message = $_POST['message']; echo "<textarea name='message' rows='8' cols='37' style='font-family: Trebuchet MS; font-size: 10pt'>".$message."</textarea>"; ?> Ну и для кнопки "Назад" написать что-то: <?php if (проверяем на заполнение обьязательных полей и если все гуд) { делаем_это; } else { echo "<form action='форма отправки' method='POST'> <textarea name='message' rows='8' cols='37' style='display: none'>".$_POST['message']."</textarea> <input type='submit'> </form>"; } ?>
RiDDi
Сообщение
02/04/2011 08:16
Копия темы
не, так не надо )) не определены $message и $_POST['message'] )))
vah-smile
Сообщение
02/04/2011 08:23
Копия темы
Ну да, немного поспешил! <?php if ($_POST['message']) $message = $_POST['message']; else $message = ""; echo "<textarea name='message' rows='8' cols='37' style='font-family: Trebuchet MS; font-size: 10pt'>".$message."</textarea>"; ?> Вот теперь все Ок!
website-builder
Сообщение
02/04/2011 08:42
Копия темы
Если вы использовали на Вашей странице jQuery то возможно есть смысл хранить данные на компе пользователя с помощью $.cookie(). Но если нет, тогда лучше не подключать целую библиотеку из-за 1 ф-ции и hg,jnfnm с JS ф-циями. Нет смысла создавать сесии если пользователь неправильно что то вводит.....Ну это чисто мое мнения, я бы так делал, может Вам легче на php, тогда на php делайте:)
vah-smile
Сообщение
02/04/2011 08:43
Копия темы
Так тоже можно: if ($_GET['message']) $message = $_GET['message']; else $message = ""; Тоисть, если в GET-запросе и имеем параметр с именем message, который не равен NULL то выполняется это условие, иначе не выполняется! Например: URL=domain.ru/index.php?message=Hello $message == "Hello"; URL=domain.ru/index.php?message= $message == ""; URL=domain.ru/index.php $message == "";
vah-smile
Сообщение
02/04/2011 08:53
Копия темы
Да. С POST работать аналогично! Передаем POST-запрос и получаем $_POST['message']. Пример выше дал просто для наглядности!
RiDDi
Сообщение
02/04/2011 08:55
Копия темы
Нет. Формирование имен параметров происходит вне программы у клиента в форме. Элемент глобального массива $_POST создается только тогда, когда есть соответствующий параметр, который создает ключ в этом массиве. В противном случаи элемент массива не существует. И использовать не существующую переменную без проверки её существования очень грубая ошибка.
anonimouse1488
Сообщение
02/04/2011 09:04
Копия темы
Совет всегда первой строкой во всех своих скриптах писать error_reporting(E_ALL)
vah-smile
Сообщение
02/04/2011 09:27
Копия темы
Так это я и делаю: if ($_POST['message']) // Проверяю, принимаем ли мы POST запрос с параметром message со значением notNULL и ошибки здесь нет! И это не "очень грубая ошибка". Так многие делают и будут делать (другого варианта просто нет, ну разве что использовать JavaScript/Ajax/JQuery)! Ведь это то же самое, что бы я написал: if ($_POST['message']==True) Мало того, код if ($_POST['message']) работает на всех хостингах и во всех браузерах, и именно поэтому я сумневаюсь, что так нельзя делать! Ну да, можо было бы проверить через JavaScript/Ajax/Jquery на заполнение обьязательных полей, но помоему это "лишний геморой"!
website-builder
Сообщение
02/04/2011 09:31
Копия темы
if ($_POST['message']) и isset($_POST["message"] всегда будет TRUE нужно !empty($_POST['message']) На 100% не уверен, но как то проверял и для себя взял писать !empty( ...
RiDDi
Сообщение
02/04/2011 09:35
Копия темы
))) Переменной $_POST['message'] может не быть. Вы подставляете в функцию IF требующую установленных переменных несуществующую переменную. Это не грубая ошибка? ))) Боже, как же Вы на сях-то пишите, даже страшно представить ))) Это же ужас!! Вы хоть понимаете, что "работает на всех хостингах и во всех браузерах" потому, что связано с клиентом? Если у пользователя в форме есть textarea с соответствующим именем, то будет работать. А если нет работать не будет. Ваша программа не обрабатывает ошибки на входе! Это критичная уязвимость! Как так можно работать!! Проверять надо, что у Вас на входе. if(isset($_POST['message]))
website-builder
Сообщение
02/04/2011 09:37
Копия темы
Не походу if ($_POST['message']) не будет, но isset вроде :)
anonimouse1488
Сообщение
02/04/2011 09:53
Копия темы
empty($var) равносильно проверке $var === false || $var === null || $var === 0 || $var === "" а isset проверка на существование
RiDDi
Сообщение
02/04/2011 10:04
Копия темы
empty() включает проверку на существование в первом же условии ;) ну не совсем в условии... это одна из функций псевдо-шаблонизатора PHP когда компилятор проверяет существование переменных и заменяет несуществующие на NULL
website-builder
Сообщение
02/04/2011 10:33
Копия темы
Я так понимаю, что например отправляем мы пустое полю , и проверяем....например полу 'hi', и получается что $_POST['hi']= ''; — то есть пусто, так вот, оно то пусто, но $_POST['hi'] то есть....:) и поэтому isset($_POST["message"] всегда TRUE ...нужно !empty($_POST['message']) — то есть даже если она есть, оно будет проверять не пуста ли она...
anonimouse1488
Сообщение
02/04/2011 10:42
Копия темы
>>> empty() включает проверку на существование в первом же условии ;) на null, только в отличие от isset будет сгенерирована ошибка >>> ну не совсем в условии... это одна из функций псевдо-шаблонизатора PHP когда компилятор проверяет существование переменных и заменяет несуществующие на NULL скомпилиться ггг
anonimouse1488
Сообщение
02/04/2011 10:43
Копия темы
true будет если только отправлена форма, а так false надо приучаться писать с error_reporting(E_ALL)
vah-smile
Сообщение
02/04/2011 10:46
Копия темы
Ну да. Синтаксически так будет правильнее, но и мой вариант к проблемам не приведет! Но я наводил только пример кода для реализации изначельно поставленного вопроса! Если угдубится, то правильнее было бы написать что-то типа такого: <?php if ((isset($_POST['message']))&&(!empty($_POST['messa ge']))) { ... } ?>
website-builder
Сообщение
02/04/2011 10:47
Копия темы
Я не совсем понимаю как тогда мы будем этот $_POST без отправки формы получать? Я думаю форму все таки придется отправлять для проверки..... Ладно, спорит не буду, как то ради интересу нужно будет по тестировать:)
anonimouse1488
Сообщение
02/04/2011 10:50
Копия темы
$_POST и $_GET существуют всегда просто они пустые не содержат элементов
website-builder
Сообщение
02/04/2011 10:55
Копия темы
Ну $_GET не всегда, поэтому для нее isset() подходит. А $_POST всегда, поэтому для нее !empty() подходи. Тут спорить бессмысленно пока кто-то не по тестирует:)
anonimouse1488
Сообщение
02/04/2011 12:10
Копия темы
спорить даже не надо на проверяй <?php error_reporting(E_ALL); var_dump($_GET); // array(0) { } есть var_dump($_POST); // есть var_dump($_COOKIE); // есть var_dump($_FILES); // есть var_dump($_SESSION); // не существует так как нет в самом вверху строки session_start(); ?> вообщем это только самые основы языка, ещё предстоит многое узнать
website-builder
Сообщение
02/04/2011 12:37
Копия темы
Ладно, что $_GET всегда есть я например не знал. Спасибо. Тогда объясни смысл: Сергей Иванов [anonimouse1488] [02.04.2011 | 11:36] [внесены изменения: 02.04.2011 | 11:37] <textarea name="message" rows="8" cols="37" style="font-family: Trebuchet MS; font-size: 10pt"><?php echo(isset($_POST["message"]) ? htmlspecialchars($_POST["message"]) : ""); ?></textarea> Сессия не нужна у textarea нет аттрибута value <?php echo(isset($_POST["message"]) ? htmlspecialchars($_POST["message"]) : ""); ?></textarea> Если isset($_POST["message"] всегда TRUE зачем делать проверку?:) Я именно про это писал. <?php echo(!empty($_POST["message"]) ? htmlspecialchars($_POST["message"]) : ""); ?>
anonimouse1488
Сообщение
02/04/2011 13:00
Копия темы
0
потому как при error_reporting(E_ALL) выскочит ошибка, мало там какие настройки по умолчанию будут в последующих версиях, а за то как ты хочешь делать по рукам бьют |
Выразить восторг, поругаться или предложить что-нибудь можно на форуме |
Для обсуждения этого сервиса так же есть темы на фрилансе по поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал" |