RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 386
от 01.07.2006, 18:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 311, Экспертов: 39
В номере:Вопросов: 4, Ответов: 10


Вопрос № 47298: У меня такая проблема - мне нужно организовать регисрацию на сайте :) Я хочу провернуть это дело задействуя cookie. Я, честно, не знаю как эту задачу реальзовывают профессиональные web-разработчики, но я решил, что имея в БД зарегистрированного польз...
Вопрос № 47299: Здравствуйте, вопрос немножечко не по теме, но вы мне кажется должны знать!! Собственно гороря, у меня проблема в том, что кроме localhost больше ничего не грузится (т.е. когла я ввожу в строке браузера test2.ru от мне выдаёт ошибку 404). Я прочи...
Вопрос № 47368: Привет! У меня вопрос по поводу Smarty. У меня такая фигня получается: //здесь я получаю массив из базы $arr_country = $db->fetchArray($arr_country_request) //Затем передаю в шаблон весь массив $tpl->assign('row',...
Вопрос № 47376: Здравствуйте! У меня есть форма с кучей текстовых полей, галочек, переключателей и списков. Мне нужно чтоб после заполнения она летела на мыло. Если не труднл приведите пример кода который обработает или где взять готовый скрипт?...

Вопрос № 47.298
У меня такая проблема - мне нужно организовать регисрацию на сайте :) Я хочу провернуть это дело задействуя cookie. Я, честно, не знаю как эту задачу реальзовывают профессиональные web-разработчики, но я решил, что имея в БД зарегистрированного пользователя, когда он вводит свои данные - логин, пароль (если они совпадают), данные (соответстрвенно логин и пароль который он ввёл) созраняются в куке и при последующих посещениях моей странички, пользователь уже авторизирован.
Допустим все ввели данные.. сохраняем set_cookie("something",$login."^^".$password,"",ну и что-то там);
отлично... теперь, когда пользоваетль заходит на сайт я смело вызаваю $something и не надо вводить никаких данных - берём их из куки..
все это конечно хорошо, только вот если человек зашёл на страницу в первый раз, то вызвав функцию $something - просто вылезет ошибка - содержания, типа "что за переменная??"
Может быть есть какая-нибудь функция, которая проверяет, создана ли кука на машине, или чтото вроде того? как мне решить проблемУ?
или есть какие-то более легкие пути по поводу решения??
Отправлен: 26.06.2006, 00:45
Вопрос задал: Toxic~Fire (статус: 2-ой класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jeka911
Здравствуйте, Toxic~Fire!

Насчет ошибки: поможет isset()... if (!isset($somevar)) $somevar="empty";
Насчет попроще: можно использовать сессии, session_start(); session_register...
---------
Шахтер - чемпион!!!
Ответ отправил: Jeka911 (статус: 5-ый класс)
Ответ отправлен: 26.06.2006, 00:52

Отвечает: Cimus
Здравствуйте, Toxic~Fire!
Можно организовать регистрацию по следующей схеме:
1) пользователь регистрируеться и в куки помещаются логин и хеш мд5 от пароля
2) когда пользователь обращаеться к сайту можно прочитать куку и сравнить данные логин и хеш мд5 от пароля соответственно с записью в базе данных

На мой взгляд в куках лучше хранить НЕ пароль, а хеш от него
md5($pass)

Прочитать данные из куки и не получить ошибку можно вот так-
if(isset($_COOKIE['something']))
{
кука есть
}
else
{
куки нет
}
---------
Достичь можно любых высот !
Ответ отправил: Cimus (статус: 3-ий класс)
Ответ отправлен: 26.06.2006, 02:34

Отвечает: Mamont
Здравствуйте, Toxic~Fire!
Чтобы не вылезала ошибка проверяем существует ли переменная:
if(isset($_COOKIE['something'])) {
// куки есть - проверяем
} else {
// куки нету
}

Но при хранении логина/пасса в куки есть ряд недостаков, например:
1. Поскольку логин/пасс находится на машине пользователя можно их прочитать и получить логин/пасс (можно конешно зашифровать пароль, но кто гарантирует что его не расшифруют)
2. Пасс можно даже не расшифровывать а просто скопировать куки и некто получит доступ от имени этого пользователя.
3. Использование куки может быть просто отключено (вот и сохранили пароль :( )

Поэтому лучше использовать сеансы. Для этого в начале странички вызываем session_start(); и все необходимые данные храним в массиве $_SESSION.
PHP сам заботится о том как передать и получить у браузера уникальный номер сессии (PHPSESSID).
Поэтому:
1. Отпадает необходимость передачи пользователю логина/пасса (теперь передается только PHPSESSID.
2. Можно включить дополнительную защиту от кражи PHPSESSID сохраняем IP пользователя после удачной проверки логина/пасса ( $_SESSION['userIP']=$_SERVER['REMOTE_ADDR']; ) и при не совпадении его заново выводим форму ввода логина/пасса.
3. Работает даже если отключены куки

Ну вот некоторые полезные мелочи, которые лучше (и нужно) учитывать создавая систему регистрации
---------
Иногда движение вперед-результат пинка под зад
Ответ отправил: Mamont (статус: 2-ой класс)
Ответ отправлен: 26.06.2006, 03:44

Отвечает: Cybernetic_Creature
Здравствуйте, Toxic~Fire!
есть такая функция
isset()
http://php.net/manual/ru/function.isset.php
она проверяет есть ли такая функция
или же можно использовать @
http://php.net/manual/ru/language.operators.errorcontrol.php
Ответ отправил: Cybernetic_Creature (статус: Специалист)
Ответ отправлен: 26.06.2006, 15:32


Вопрос № 47.299
Здравствуйте, вопрос немножечко не по теме, но вы мне кажется должны знать!!
Собственно гороря, у меня проблема в том, что кроме localhost больше ничего не грузится (т.е. когла я ввожу в строке браузера test2.ru от мне выдаёт ошибку 404). Я прочитал в справке денвера (апача), что нужно включить в сервисах DSN-клиент. пробую... двойной клик по сервису... нажимаю кнопку запустить сервис (он всегда выключен)... проходит где-то 10% и всё... пишет мне:
"Не удалось запустить службу DSN-клиент на локальный компьютер."
"Ошибка 5: Отказано в доступе"
Я не знаю, что делать...
подскажите
Отправлен: 26.06.2006, 00:46
Вопрос задал: Toxic~Fire (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Cimus
Здравствуйте, Toxic~Fire!
Если во время запуска службы выдаётся ошибка о том, что отказанно в доступе, то смените свою учётную запись на администратора и пвторите запуск.

---------
Достичь можно любых высот !
Ответ отправил: Cimus (статус: 3-ий класс)
Ответ отправлен: 26.06.2006, 02:41

Отвечает: Цепковский Антон Сергеевич
Здравствуйте, Toxic~Fire!

Если система аля NT, тогда найдите файл %Windows%/system32/drivers/etc/hosts и добавьте строку 127.0.0.1 test2.ru
Если виртуальные каталоги настроены правильно, то работать будет.

С уважением,
Антон Цепковский
---------
Вся наша жизнь - RPG
Ответ отправил: Цепковский Антон Сергеевич (статус: 1-ый класс)
Ответ отправлен: 26.06.2006, 21:04


Вопрос № 47.368
Привет! У меня вопрос по поводу Smarty.

У меня такая фигня получается:

//здесь я получаю массив из базы
$arr_country = $db->fetchArray($arr_country_request)
//Затем передаю в шаблон весь массив
$tpl->assign('row', $arr_country);

В самом шаблоне делаю
{foreach from=$row item=item_country}

<option value="{$item_country.Country_ID}">{$item_country.Country_Name}</option>

{/foreach}



Но он выдает мне в комбо-боксе

1
1
t
t

хотя должен выть

test_country у корого id = 1.

В чем может быть проблема?
Отправлен: 26.06.2006, 15:49
Вопрос задал: Коростов Роман (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Mamont
Здравствуйте, Коростов Роман!

Проверь содержимое массива $arr_country скорее всего дело в нем, хотя могу и ошибаться. Нужно глянуть код - а так сказать сложно.
---------
Иногда движение вперед-результат пинка под зад
Ответ отправил: Mamont (статус: 2-ой класс)
Ответ отправлен: 27.06.2006, 21:25


Вопрос № 47.376
Здравствуйте!

У меня есть форма с кучей текстовых полей, галочек, переключателей и списков. Мне нужно чтоб после заполнения она летела на мыло. Если не труднл приведите пример кода который обработает или где взять готовый скрипт?
Отправлен: 26.06.2006, 17:20
Вопрос задал: Denwer (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Jeka911
Здравствуйте, Denwer!

Вот пример из официального РНР-матуала:

Приложение:

---------
Шахтер - чемпион!!!

Ответ отправил: Jeka911 (статус: 5-ый класс)
Ответ отправлен: 26.06.2006, 19:07

Отвечает: Santana
Здравствуйте, Denwer!
Приведу пример HTM-кода. Это как раз что Вам надо. Получаем на емейл письмо с фотматом ИмяПоляВФорме=ЗначениеКакоеВвелПосетитель. Думаю на основе примера сделать PHP код не составит труда

<HTML><HEAD><TITLE> Форма для письма </TITLE>
<link rel="stylesheet" href="style.css" type="text/css">
</HEAD>
<BODY>
<CENTER><B>Отправка по E-mail со страницы</B><BR><BR>
<form name="form" method="POST" action="mailto:email@mail.ru?SUBJECT=Отправка письма" enctype="text/plain">
<TABLE>
<TR>
<TD><INPUT name="name" text=#FFFFFF type="text" tabindex="2"value="Name" ><BR></TD>
</TR>
<TR>
<TD><INPUT name="Email" text="#FFFFFF" type="text" tabindex="1"value="ваш e-mail"><BR></TD>

</TR>
</TABLE>
    <TEXTAREA rows=3 cols=30 NAME="Message">Текст письма</TEXTAREA>
<BR>
<INPUT TYPE="SUBMIT" NAME="Submit1" VALUE="ОК" >

</P>
</form></CENTER>
</BODY></HTML>
Ответ отправил: Santana (статус: 3-ий класс)
Ответ отправлен: 26.06.2006, 19:30

Отвечает: Mamont
Здравствуйте, Denwer!

Отправить форму на email (если не требуется проверки введенных данных) можно так (форма передается методом POST):
<?
$to='admin@myhost.ru';
$subject='Письмо с сайта';
$headers='';
$message='';

foreach( $_POST as $name=>$value ){
$message.="[$name] $value ";
}
mail($to, $subject, $message, $headers);
echo 'Сообщение отправлено';
?>

---------
Иногда движение вперед-результат пинка под зад
Ответ отправил: Mamont (статус: 2-ой класс)
Ответ отправлен: 27.06.2006, 16:12


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное