Поисковая форма:) поиск по free-lance.ru Топ/история/обновления фриланса, по разным параметрам (темы, сообщения, пользователи...) Автоматическое удаление постов от ненужных юзеров в топике (php скрипт) Досье(точный ник)
 

Ник (или часть ника):
?
Какой текст ищем:
?
Раздел блогов:
За срок
дней
Тип поиска: (по вхождению: по тексту гуг выдаст посты с "гуг", "гугл", "огугл"; "полнотекстовый": по тексту "гуг" выдаст посты только с "гуг")
По вхождению строки:  Полнотекстовый: 
(поиск не 100% актуальный, есть определённая задержка при обновлении данных для поиска. )
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
mrArmstrong Сообщение 02/04/2011 07:46 Копия темы
ок. попробую.
mrArmstrong Сообщение 02/04/2011 07:48 Копия темы
что-то все равно не хочет запоминать .(
anonimouse1488 Сообщение 02/04/2011 07:52 Копия темы
а кнопка есть <input type="submit" />?
и обработчик должна быть таже самая страница
<form action="<?php echo($_SERVER["PHP_SELF"]); ?>" method="post">


<textarea name="message" rows="8" cols="37" style="font-family: Trebuchet MS; font-size: 10pt"><?php echo(isset($_POST["message"]) ? htmlspecialchars($_POST["message"]) : ""); ?></textarea>



<input type="submit" />


</form>
mrArmstrong Сообщение 02/04/2011 07:57 Копия темы
да, это все есть.
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>";
?> 

Вот теперь все Ок!
RiDDi Сообщение 02/04/2011 08:32 Копия темы
А $_POST['message']? ))
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 == "";
website-builder Сообщение 02/04/2011 08:44 Копия темы
?message=hello 

$_GET['message']   == 'Hello';
vah-smile Сообщение 02/04/2011 08:53 Копия темы
Да. С POST работать аналогично! Передаем POST-запрос и получаем $_POST['message']. Пример выше дал просто для наглядности!
website-builder Сообщение 02/04/2011 08:54 Копия темы
Я так и понял:)
RiDDi Сообщение 02/04/2011 08:55 Копия темы
Нет. Формирование имен параметров происходит вне программы – у клиента в форме. Элемент глобального массива $_POST создается только тогда, когда есть соответствующий параметр, который создает ключ в этом массиве. В противном случаи элемент массива не существует. И использовать не существующую переменную без проверки её существования – очень грубая ошибка.
anonimouse1488 Сообщение 02/04/2011 09:04 Копия темы
Совет всегда первой строкой во всех своих скриптах писать error_reporting(E_ALL)
mrArmstrong Сообщение 02/04/2011 09:04 Копия темы
Всем спасибо!
Всем плюс.

Буду разбираться .)
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 Копия темы
потому как при error_reporting(E_ALL) выскочит ошибка, мало там какие настройки по умолчанию будут в последующих версиях, а за то как ты хочешь делать по рукам бьют
0

©2008 edogs egods
Выразить восторг, поругаться
или предложить что-нибудь можно на форуме
Для обсуждения этого сервиса так же есть темы на фрилансе по
поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал"