| |
|
|
| | Помогите мне со следующим вопросом. Допустим у меня есть госевая книга. Для добавления сообщения используется 3 поля. Name, e-mail, textBox. Как можно спомощью cookie запомнить на комп пользователя его имя и e-mail, что бы он при добавлении сообщения в поля name и e-mail сразу добавлялися его имя и mail. | |
| |
|
|
| |
|
|
| |
для: Roo$
(05.06.2006 в 22:38)
| | | Для этого следует воспользоваться функцией setcookie
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
name - название
value - значение
expire время в секундах задается так time() + 3600 в данном примере соолшу сохраниться на 1 час
|
Теперь вернемся к Вашему примеру
До любого вывода в браузера введите этот текст
<?
setcookie ("email",$email,time() + 3600*24);
setcookie ("name",$name,time() + 3600*24);
?>
|
Потом в любом месте скрипта данные из COOKIE можно получить через суперглобальный массив $_COOKIE. В Вашем случае примерно так
<input type="text" name="name" value="<? echo $_COOKIE['name']; ?>"><br>
<input type="text" name="email" value="<? echo $_COOKIE[email]; ?>">
|
| |
| |
|
|
| |
|
|
| |
для: Ziq
(05.06.2006 в 22:51)
| | | Большое спасибо за ответ. Это то что нужно было мне. Но может ответите еще на вопросик? Установил все как мне вы посоветовали. Но, допустим пользователь заходит в гостевую впервый раз, соответственно куки у него на компе еще нет (моей книги). Может поэтому у меня появляются такие ошибки со строками:
Warning: Cannot modify header information - headers already sent by (output started at z:\home\guest1\www\index.php:2) in z:\home\guest1\www\index.php on line 2
Warning: Cannot modify header information - headers already sent by (output started at z:\home\guest1\www\index.php:2) in z:\home\guest1\www\index.php on line 3
Notice: Undefined index: nameq in z:\home\guest1\www\index.php on line 161
Notice: Undefined index: email in z:\home\guest1\www\index.php on line 162
где 161 и 162 это
<input type=text value...
<input type=text value..
Или не в этом дело? Почему они у меня вылетают все время? | |
| |
|
|
| |
|
|
| |
для: Roo$
(06.06.2006 в 00:25)
| | | Первым делом отсылаешь куку, а потом уже всё остальное.. | |
| |
|
|
| |
|
|
| |
для: Roo$
(06.06.2006 в 00:25)
| | | Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода echo, print или непосредственного вывода вне тэгов <?php и ?>. Это связано с тем, что HTTP-заголовки передаются перед всеми данными и когда происходит вывод в окно браузера PHP вынужден их пред этим отослать клиенту. Поэтому повторно, после вывода информации в браузер он не может работать с куками, сессиями и отправлять заголовки.
Если вывод текста до отправки заголовков необходим следует воспользоваться функциями управления вывода, позволяющих задерживать вывод информации в браузер.
http://www.softtime.ru/group/id_group=12
http://www.softtime.ru/forum/ead.php?id_forum=1&id_theme=147
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=148
Вы можете также включить буфферизацию, если имеете доступ к конфигурационному файлу php.ini
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8484 | |
| |
|
|
| |
|
|
| |
для: cheops
(06.06.2006 в 10:57)
| | | Если я первый раз захожу на строничку то у меня вылетают эти две ошибки
Notice: Undefined index: nameq in z:\home\guest1\www\index.php on line 161
Notice: Undefined index: email in z:\home\guest1\www\index.php on line 162
где 161 и 162 это
<input type=text value...
<input type=text value..
А в дольнейшем они не вылетают (2,3...раза заход.в гост.)
Мне кажется что надо сделать какуюто проверку. Т.к. при первом входе куки полей еще нет, а он пытается подставить значения, и наверное из-за этого вылетают эти ошибки?? | |
| |
|
|
| |
|
|
| |
для: Roo$
(06.06.2006 в 15:40)
| | |
Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля ошибок в PHP. Однако множество готовых скриптов требуют более низкого уровня ошибок.
Вы можете установить более слабый контроль ошибок одним из следующих способов:
Впишите в скрипты строчку:
Error_Reporting(E_ALL & ~E_NOTICE);
Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными.
Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания:
php_value error_reporting 7
Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым и может привести к серьезным неудобствам при отладке!
|
| |
| |
|
|
| |
|
|
| |
для: P@Sol
(06.06.2006 в 15:48)
| | | Вродебы ошибки не вылетают, дома все работает без проблем, но когда на сайт выкладываю, то он не запоминает ничего. Посмотрите пожалуйсто в чем тут дело. Говорят якобы надо испоьзовать $HTTP_POST_VARS или $HTTP_GET_VARS. Но у меня всеравно не получается. Вот проект помогите мне пж (запускать j.php) | |
| |
|
|
| |
|
|
| |
для: Roo$
(06.06.2006 в 22:18)
| | | error_reporting(E_ALL); | |
| |
|
|
| |
|
|
| |
для: valenok
(06.06.2006 в 22:24)
| | | Прописал | |
| |
|
|
| |
|
|
| |
для: Roo$
(06.06.2006 в 22:25)
| | | Это вместо eror_reprorting(E_ALL $ -E_NOTiCE)
Ошибки выдало? | |
| |
|
|
| |
|
|
| |
для: valenok
(06.06.2006 в 22:33)
| | | Ошибки не выдают , но и не запоминает . Посмотрите пожалуйсто выше пример (прикреплен к сообщению) | |
| |
|
|
| |
|
|
| |
для: valenok
(06.06.2006 в 22:33)
| | | И кто такая переменная $name в самом начале скрипта? | |
| |
|
|
| |
|
|
| |
для: valenok
(06.06.2006 в 22:36)
| | | $name я объявил как поле1. Затем я проверяю на наличие в папке файла с именем $name | |
| |
|
|
| |
|
|
| |
для: valenok
(06.06.2006 в 22:36)
| | | Это шутка? Конечно он ничего не пишет...
Ты собачки убери перед каждой функцией..
[поправлено модератором] | |
| |
|
|
| |
|
|
| |
для: valenok
(06.06.2006 в 22:40)
| | | убрал, и все равно не хочет | |
| |
|
|
| |
|
|
| |
для: valenok
(06.06.2006 в 22:40)
| | |
<?php if(isset($_POST['name'])) { setcookie ("name",$name,time() + 3600*24); }
@$pos="Вы тут были ".$_COOKIE['counter']." раз. <br>";
//Сначала использование переменной потом проверка........
if ( !isset($_COOKIE['counter']) ) {
setcookie("counter", 1);
}else {
setcookie("counter", $_COOKIE['counter']+1,mktime(0,0,0,01,25,2010));
}
?>
<form method=post>
<input type=hidden name=action value=post>
Логин:<br>
<input type=text name=name value="<? @echo $_COOKIE['name']; ?>"><br>
Пароль:<br>
<input name="pass" type="password" value="">
<br>
<input type=submit value="Нажать">
<br><br>
<a href="k.php">Ðåãèñòðàöèÿ</a>
</form>
<?php
echo $pos;
echo "Какойто текст";
$pass=$_POST['pass'];
$filename=$_POST['name'];
// =) сейчас ты объяснишь зачем тут была переменная $name
if ( file_exists($filename) ) {
$text = file($name);
foreach($text as $val)
{
if($val == $pass){ echo "текст. Я никогда так не буду написан";}
// А кто такая $val и где она живёт? А может она не курит, а может она не пьёт ???
}
}
else { print "Файла нема";exit;}
// у тебя для каждого пользователя по файлу? Псих
?>
|
[поправлено модератором] | |
| |
|
|
| |
|
|
| |
для: valenok
(06.06.2006 в 22:51)
| | | Да, у меня для каждого пользователя создается свой файл в котором хронится его пароль, а имя его это и есть название файла.
Там я делал проверку если в текущем файле есть файл с именем введеное в поле1 ($name), то следующим действием открываю файл и проверяю на ноличие правельно введенго пароля | |
| |
|
|
| |
|
|
| |
для: Roo$
(06.06.2006 в 22:59)
| | | [поправлено модератором] | |
| |
|
|
| |
|
|
| |
для: valenok
(06.06.2006 в 23:04)
| | | Первым делом в разработке приложений является креативная часть.
Как сделать это или то и только пот делать.
Сначала реши как это сделать.
Словами на бумажке.
А потом найти подходящюю функцию - не очень трудно... | |
| |
|
|
| |
|
|
| |
для: valenok
(06.06.2006 в 23:04)
| | | пробывал, но с базой дан. не дружу .... | |
| |
|
|
| |
|
|
| |
для: Roo$
(06.06.2006 в 23:07)
| | | Всё в порядке? Разобрался? | |
| |
|
|
| |
|
|
| |
для: Roo$
(06.06.2006 в 22:18)
| | | ТЫ мне можешь закинуть исправленный куки проект, а то у меня все равно не пашет | |
| |
|
|
| |
|
|
| |
для: Roo$
(06.06.2006 в 23:11)
| | | Вот тормоз, скажешь наверное, попался мне..... | |
| |
|
|
| |
|
|
| |
для: Roo$
(06.06.2006 в 23:13)
| | | О ком о ком, но о себе никогда ничего такого не говори / пиши.
Конечно не могу.
Раз ты не можешь спроектировать свой проект - в этом могу чуть чуть помочь.
1. Форма - есть форма в ней такие то поля
2. Надо чтоб после того как пользователь в первый раз её заполнил, значение одного из полей осталось..
3. Предпологаемый механизм реализыции - куки
4. Надо проверить правильность введённого пользователем пароля который храниться в файле
5. файл один на всех
6. как можно устроить один файл на всех? - ну наверное по строчке на пользователя
6.а. Топаю на форум и спрашиваю - как строку типа "логин пароль" разбить на две отдельных переменных логин и праоль.
7. Добавить немного безопасности...
7.а. - на форум: каким образом обезопасить свой скрипт от передачи нехороших данных?
Ответы:
о куках можно почитать тут: Setcookie
о разбивании строк тут: хurl=http://il.php.net/manual/ru/ref.strings.php] Strings[/url] (Весь раздел на Русском + внизу целый список строковых функций)
о безопасности: скорее всего надо предпологать что данные переданные пользователем тоже в принципе строки. Значит туда же.
Ну и о работе с файлами тут:Файловая система
[поправлено модератором] | |
| |
|
|
| |
|
|
| |
для: Roo$
(05.06.2006 в 22:38)
| | | Можно воспользоваться следующим скриптом
<?php
Error_Reporting(E_ALL & ~E_NOTICE);
$filename=$name;
// Обработчик HTML-формы
if(!empty($_POST))
{
$name=$_POST['name'];
$pass=$_POST['pass'];
$passto=$_POST['passpovtor'];
setcookie ("name",$name,time() + 3600*24);
setcookie ("pass",$pass,time() + 3600*24);
header("Location: $_SERVER[PHP_SELF]")
}
if(!empty($_COOKIE))
{
echo "Hello, ".$_COOKIE['name']."<br>";
}
?>
<form method=post>
Имя:<br>
<input type=text name=name><br>
Пароль:<br>
<input name="pass" type="password" value="">
<br>
Повторить ввод пароля:<br>
<input name="passpovtor" type="password" value="">
<br> <br>
<input type=submit value="Зарегистрироваться">
</form>
|
| |
| |
|
|
| |
|
|
| |
для: cheops
(07.06.2006 в 01:24)
| | | if(!empty($_POST) значит у тебя с одним именем пройдут ли только с паролем.
если так значит весьма не эффективная поверка для работающих с БД
которым если не ввести пароль можно спокойно войти по нужному логину...
А откуда там на третей строке опредлилась перемнная $name; | |
| |
|
|
| |
|
|
| |
для: valenok
(07.06.2006 в 07:32)
| | | Это демонстрационный скрипт.
if(!empty($_POST)) означает лишь одно - что пользователь нажал кнопку подтверждения и для определения этого факта - это идеальная проверка. Никаких других проверок, в том числе на занятость имени, не проводится дабы не перегужать скрипт и не мешать его пониманию.
PS У вас наблюдаются явно двойные стандарты, вам кажется, что написанный вами скрипт слишком большой и подробный, а написанный другими людьми скрипт, слишком маленький и не обрабатывает всех частных случаев.
>А откуда там на третей строке опредлилась перемнная $name;
Осталось во время редактирования первого поста сообщения. | |
| |
|
|