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

Форум PHP

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

 

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

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

тема: Создание регистрации для сайта с большим кол-вом юзеров на MySQL.
 
 автор: Dajver   (16.01.2007 в 18:36)   письмо автору
 
 

Требуется создание регистрации. Я может чего-то не понимаю. Изучил пока тока хтмл.
Если тема уже была - киньте ссылки с темами, а то скока смотрел чего-те не очень понятно...

По пунктам как предположительно оно должно быть.

1. На странице index создаём форму с полями для ввода "Логин", "пароль" и кнопкой "регистрация".

Здесь проблемов не возникает. Это просто. Что нужно сделать далее? Если считать, что существует таблица в MySQL под именем "regin".

З.Ы. Работаю с Денвером.

   
 
 автор: hsasha   (16.01.2007 в 18:42)   письмо автору
 
   для: Dajver   (16.01.2007 в 18:36)
 

Учить пхп или другой язык для соединения с базой:)

   
 
 автор: Dajver   (16.01.2007 в 18:53)   письмо автору
 
   для: hsasha   (16.01.2007 в 18:42)
 

=)

ну это-то оно по-любому нужно. я полазил по форуму и наковырял регистраций....тока вот что-то не сходится....

файл index.php -


<form action="reg.php"> 
Ник:<br> 
<input type="text" name="nickname"><br> 
Пароль:<br> 
<input type="password" name="password"><br> 
<input type="submit" value="Регистрировать"><br> 
<input type="reset" value="Очистить"><br> 
</form> 


обработчик reg.php -


<?php 
//Кодирование тегов и обратных слешей в нике 
$nick htmlspecialchars($_POST['nick']); 
$pass htmlspecialchars($_POST['pass']); 
//Удаление пробелов 
$nick trim($nick); 
$pass trim($pass); 
//Проверка логина 
if(empty($nick)) 

echo 
"Введите логин!"
exit(); 

//Проверка пароля 
if(empty($pass)) 

echo 
"Введите пароль"
exit(); 

//Соединение с базой данных 
require_once("config.php"); 
//Если все поля заполнены, продолжение проверки 
if(strlen("$nick") > 12)  

print 
"Слишком длинный логин!"
exit(); 

if(
strlen("$pass") > 10)  

print 
"Слишком длинный пароль!"
exit(); 

//Проверка (от SoftTime =) ) 
$rus = array("А","а","В","Е","е","К","М","Н","О","о","Р","р","С","с","Т","Х","х"); 
// Массив латинских букв 
$eng = array("A","a","B","E","e","K","M","H","O","o","P","p","C","c","T","X","x"); 
// Заменяем русские буквы латинскими 
$eng_nick str_replace($rus$eng$nick);  
// Заменяем латинские буквы русскими 
$rus_nick str_replace($eng$rus$nick);  
// Формируем SQL-запрос 
$query "SELECT * FROM users  
          WHERE nick LIKE '
$nick' OR 
                nick LIKE '
$eng_nick' OR 
                nick LIKE '
$rus_nick'"
$ath mysql_query($query); 
  if(
$ath
  { 
    if(
mysql_num_rows($ath)>0
    { 
    echo 
"Ник \"$nick\" уже зарегистрирован."
    exit(); 
    } 
  } 

//Регистрация пользователя 
  
$nick mysql_escape_string($nick); 
  
$pass mysql_escape_string($pass); 
  
$sql "INSERT INTO users (nick, pass) VALUES ('$nick', '$pass')"
  if(
mysql_query($sql)) 
  { 
  echo 
"Вы успешно зарегистрированы!<br> 
  Ваш ник: 
$nick<br> 
  Ваш пароль: 
$pass<br> 
  <a href=\"enter.php?nick=
$nick&amp;pass=$pass\">Вход</a><br> 
  </small></card></wml>"

  
mysql_close(); 
  } 
  else  
  { 
  echo 
"Ошибка регистрации!"
  
mysql_close(); 
  } 
?> 


config.php -


<?php 
//Местонахождение базы данных 
  
$dblocation "localhost"
//Имя БД 
  
$dbname "test"
//Пользователь 
  
$dbuser "root"
//Пароль 
  
$dbpasswd ""

  
  
// Connect 
  
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd); 
  if (!
$dbcnx
  { 
    echo( 
"В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно." ); 
    exit(); 
  } 

  if (! @
mysql_select_db($dbname,$dbcnx) ) 
  { 
    echo( 
"В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно." ); 
    exit(); 
  } 
  
// Небольшая вспомогательная функция, которая выводит сообщение об ошибке 
  // в случае ошибки запроса к базе данных 
  
function puterror($message
  { 
    echo(
"<p>$message</p>"); 
    exit(); 
  } 
?> 


Этот способ у меня почему-то не работает...когда заполняю форму и жму "регистрация" он говорит "введите логин".

   
 
 автор: NIK   (16.01.2007 в 19:06)   письмо автору
 
   для: Dajver   (16.01.2007 в 18:53)
 

ну правильно, нужно смотреть что копируете :)

в форме у вас поле Ник называется nickname, а в обработчике он идёт как nick. В этом и ошибка.

   
 
 автор: Dajver   (16.01.2007 в 19:16)   письмо автору
 
   для: NIK   (16.01.2007 в 19:06)
 

Исправил имя в форме. таже ошибка...
заодно походая фигня есть в пароле....когда убрал ничего не изменилось...

   
 
 автор: NIK   (16.01.2007 в 19:18)   письмо автору
 
   для: Dajver   (16.01.2007 в 19:16)
 

не усмотрел. В форме: password, в обработчике: pass.

   
 
 автор: Dajver   (16.01.2007 в 19:32)   письмо автору
 
   для: NIK   (16.01.2007 в 19:18)
 

А вот в этом коде



<?php
  
///////////////////////////////////////////////////
  // уЙУФЕНБ БЧФПТЙЪБГЙЙ HTTP-Basic БЧФПТЙЪБГЙЙ
  // 2003-2005 (C) IT-УФХДЙС SoftTime (http://www.softtime.ru)
  // уЙНДСОПЧ й.ч. (simdyanov@softtime.ru)
  ///////////////////////////////////////////////////
  
$dblocation "localhost";
  
$dbname "softtime";
  
$dbuser "root";
  
$dbpasswd "1";
  
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
  if (!
$dbcnx) exit("<p>К сожалению, не доступен сервер MySQL</p>");
  if (!@
mysql_select_db($dbname,$dbcnx)) exit("<p>К сожалению, не доступна база данных</p>");
?>


когда заполняешь все формы вылазит сообщение что база недоступна....то есть исполняется строка -


if (!@mysql_select_db($dbname,$dbcnx)) exit("<p>К сожалению, не доступна база данных</p>");

   
 
 автор: Poison   (16.01.2007 в 19:46)   письмо автору
 
   для: Dajver   (16.01.2007 в 19:32)
 

А вот это настроено вами???

  $dblocation = "localhost"; 
  $dbname = "softtime"; 
  $dbuser = "root"; 
  $dbpasswd = "1";

   
 
 автор: Dajver   (16.01.2007 в 20:00)   письмо автору
 
   для: Poison   (16.01.2007 в 19:46)
 

>А вот это настроено вами???
>

>  $dblocation = "localhost"; 
>  $dbname = "softtime"; 
>  $dbuser = "root"; 
>  $dbpasswd = "1";
>


В этом месте я переделал только пароль на root'а. ведь 1 можно поставить? хотя оно и ез единицы не работало. имя базы точное - я создавал её сам.

   
 
 автор: Poison   (16.01.2007 в 20:13)   письмо автору
 
   для: Dajver   (16.01.2007 в 20:00)
 

Тагда дело в вашей MySQL=))
Вы уверены что сервер MySQL запущен и работает???

   
 
 автор: Dajver   (16.01.2007 в 20:34)   письмо автору
 
   для: Poison   (16.01.2007 в 20:13)
 

=)сервер работает...денвер устанавливал раз 5, так что Run нажать не забываю.

ну ладно. чем народ мучать пойду куплю книжку по пых-пыху и сяду учить..

   
 
 автор: Dajver   (17.01.2007 в 22:50)   письмо автору
 
   для: Dajver   (16.01.2007 в 20:34)
 

так...с авторизацией разобрался. Помогите разобраться с регистрацией.
чего я уже понял -
1. Инф-ция берется из текстого поля в index(для примера. хотя может быть где угодно). там ей присваивается какое-либо кодовое имя. к примеру 'name' для имени.
2. По нажатию кнопки "Регистрировать"(свойство submit), выполняется скрипт в файле, который указан как action при создании формы. скажем так -


<FORM action="reg.php"...>


3. В скрипте указано что следует делать.. значение текстого поля присваивается функции...если я чего не путаю... допустим так -


$NICK=('name');


.вот тут возникают трудности... как нас учили в школе, составляем алгоритм работы...
1) Проверка ячейки - а вдруг она пустая. if пустая -> ECHO 'Введите имя';
2) Потом в одном примере показано согласование латинских и русских символов..
3) Заносим в базу значение из $NICK. думаю такой код подойдёт -


$sql = "INSERT INTO users (nick) VALUES ('$nick')"; 


З.Ы. должна быть предварительно создана и размечена таблица "users" в БД.
4)Выводим юзверю месагу дескать "спасибо за регистрацию" и перенаправляем на какую-либо страницу. этот пункт неважен пока что, поэтому его не рассматриваем.

надо сделать такой вот скриптик...в общем просто скатать скрипт можно, но я хочу ПОНЯТЬ.объясните как оно работает.
в файле config.php лежат данные о юзере БД, её положении, имени.

   
Rambler's Top100
вверх

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