Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Регистрация
 
 автор: Katreen   (23.01.2006 в 18:00)   письмо автору
 
 

Как вывести сообщение, что логин уже использован при регистрации на форуме (то есть вывести страницу конкретному пользователю, в зависимости от введенных данных ) Это с помощью сессий и/или кук? Или как? Напишите, please, чуть поподробнее

   
 
 автор: XPraptor   (23.01.2006 в 18:04)   письмо автору
 
   для: Katreen   (23.01.2006 в 18:00)
 

Суть вопроса не очень понятна. Почему нельзя вывести при регистрации что логин используется? Ведь перед тем как внести пользователя в базу, вы проверяете есть такой логин или нет, и если нет, то вносите в базу, а если есть вы выдаете ему текст об этом. Как тут можно по другому сделать то?

   
 
 автор: WebTech   (23.01.2006 в 18:34)   письмо автору
 
   для: Katreen   (23.01.2006 в 18:00)
 


<?php
$login 
mysql_escape_string($_POST['login']); // получаем логин из формы
$qry 'select login from table where login=$login';
$res mysql_query($qry);
$num mysql_num_rows($res);
if (
$num 0)
   {
   
// скрипт регистрации
   
}
   else
      {
      echo 
'Логин уже использован';
      }
?>

   
 
 автор: Katreen   (23.01.2006 в 18:51)   письмо автору
 
   для: WebTech   (23.01.2006 в 18:34)
 

Проблема в том, что я хочу в одном скрипте написать ввод данных и вывод сообщения, после метода Post надо header location на тот же скрипт и сообщение теряется...неужели в одном скрипте не сделать

   
 
 автор: Евгений Петров   (23.01.2006 в 18:57)   письмо автору
 
   для: Katreen   (23.01.2006 в 18:51)
 

Проверяйте были ли введены данные.
<?
  
// если нажата кнопка Регистрация
  
if($submit)
  {
    
$query mysql_query("SELECT COUNT(*) FROM tbl WHERE login = '$login'");
    if(
mysql_result($query,0,0) > 0)
      echo 
"Пользователь с таким ником уже зарегистрирован!";
    else
    {
      
// ...
    
}
  }
?>
<form action="<?=$_SERVER['PHP_SELF']?>">
  <input type="text" name="login">
  <input type="password" name="password">
  <input type="submit" name="submit" value="Регистрация">
</form>

   
 
 автор: XPraptor   (23.01.2006 в 19:01)   письмо автору
 
   для: Katreen   (23.01.2006 в 18:51)
 

Да, туго у меня с воображением. Не могу разобрать, зачем локатион трогать, почему теряются значения?
Вы форму регистрации на странице какими значениями заполняете? Они же из пост данных беруться, так куда они потом деваются?
Вот допустим у вас форма:

    <?php print $str_message?>
    <form name="frm_reg" action="" method="post">
    <input type="text" name="login" value="<?php print $array_reg["login"]; ?>"><BR>
    <input type="text" name="password" value="<?php print $array_reg["password"]; ?>"><BR>
    <input type="submit" name="sbm_reg" value="register"><BR>
    </form>
    

А в коде этой страницы обработчик полученных данных

    <?php
    
global $array_reg$str_message;
    
$array_reg["login"]="";
    
$array_reg["pasword"]="";
    
$str_message="";
    
    if(isset(
$_POST["sbm_reg"]){
       
$array_reg["login"]=$_POST["login"];
       
$array_reg["password"]=$_POST["password"];
       
тут проверяем есть логин в базе или нет
       
if(логин есть в базе){
           
$str_message="Есть логин!";
       }else{
           
$str_message="Поздравляю ети его...";
       }
    }
    
?>
    

И куда могут деться данные то?

   
 
 автор: Katreen   (23.01.2006 в 19:15)   письмо автору
 
   для: XPraptor   (23.01.2006 в 19:01)
 

XPraptor
Здесь никуда не деваются, но если нажать в браузере F5, то данные второй раз передадутся, так ведь? А чтобы этого избежать, после метода Пост надо сразу программно обновить страницу, есть
<? if(isset($_POST["sbm_reg"]){ 
       
$array_reg["login"]=$_POST["login"]; 
       
$array_reg["password"]=$_POST["password"]; 
       
тут проверяем есть логин в базе или нет 

      если нет то добавляем 

    И сразу же 
     header
("Location:".$_SERVER['REQUEST_URI']);        
    
     
И Тогда не получается вывести сообщения       
    
?>

Как же все-таки делать, если дважды отправлять данные нельзя и сообщение тоже вывести надо , а header на другой скрипт с сообщением - некрасиво.

   
 
 автор: XPraptor   (23.01.2006 в 19:19)   письмо автору
 
   для: Katreen   (23.01.2006 в 19:15)
 

Если нажмете F5 то данные конечно передадуться, но, если пользователь прошел регистрацию, то он уже есть в базе и ему выведется то логин есть, а если не прошел, то ему выведется что поздравляем. И пусть он сколько угодно после этого жмет F5 и радуется сообщенгию, что логин уже есть в базе.

   
 
 автор: WebTech   (23.01.2006 в 19:21)   письмо автору
 
   для: XPraptor   (23.01.2006 в 19:01)
 

Стоп!
Форму не надо ни чем заполнять.
Вам надо чтобы юзер автоматически регался, если на его машине есть куки или что?
У вас есть таблица с юзерами, где есть их логины. Когда юзер пытается порегаться, то берем его логин из POST, потом смотрим, есть ли такой логин в таблице. Если есть, то выводим об этом сообщение, если нет, то вносим в таблицу новый логин. Или как?
Но я так подозреваю, что вам нужно что-то типа автологина :-)

   
 
 автор: Unkind™   (23.01.2006 в 23:41)   письмо автору
 
   для: WebTech   (23.01.2006 в 19:21)
 

Я вообще не понимаю, че надо девушке...Вам нужна регистрация для своего сайта или для авторегистрации? >=) Просто скажите честно, че томите, а то в регистрации ничего сложного нет и, вроде, вам все объяснили...Так что я согласен с WebTech...Что-то тут не чисто...=)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования