| |
|
|
| | Вот, я создал новую тему, теперь будем обсуждать новые вопросы тут, помогите, я пытаюсь реализовать форму регистрации пользователя,а после введения имени и пароля и нажатия 'регистрация', у меня пишет "регистрация невозможна ", но он не должен вроде это писать, короче помогите отладить скрипт...
вот это auth.php :
<?
$dblocation = "127.0.0.1";
$dbname = "local";
$dbuser = "root";
$dbpasswd = "";
session_start();
if (isset($HTTP_POST_VARS['userid']) &&
isset($HTTP_POST_VARS['password']))
{
$userid = $HTTP_POST_VARS['userid'];
$password = $HTTP_POST_VARS['password'];
$db_connect = mysql_connect($dblocation,$dbuser,$dbpasswd);
mysql_select_db('auth',$db_connect);
$query = "select * from auth where name='".$userid."'
and pass=password('$password')";
$result = mysql_query($query,$db_connect);
if ($result)
{
$HTTP_SESSIoN_VARS['valid_user'] = $userid;
}
}
?>
<html>
<body>
<h1>Страница Регистрации</h1>
<?
if (isset($HTTP_SESSION_VARS['valid_user']))
{
echo 'Вы зарегестрированы как '.$HTTP_SESSION_VARS['valid_user'].'<br />';
echo '<a href="destroy.php">Exit</a><br />';
}
else
{
if(isset($userid))
{
echo ("Регистрация невозможна!");
}
?>
<form method="post" action="auth.php">
<table>
<tr><td>Имя:</td>
<td><input type="text" name="userid"></td></tr>
<tr><td>Пароль:</td>
<td><input type="password" name="password"></td></tr>
<td><td colspan=2><input type=submit value='Зарегестрировать'>
</td></tr>
</table></form>
<?
}
?>
<a href="members_only.php">Только для зарегестрированных пользователей</a>
</body>
</html>
|
| |
| |
|
|
| |
|
|
| |
для: LimP
(11.08.2004 в 14:12)
| | | Т.е. у вас создана база данных auth, а в ней таблица auth. Проверить созданы ли база данных и таблицы можно при помощи запросов в клиенте mysql:
show databases; -- среди баз данных должна быть auth
use auth;
show tables; -- среди таблиц должна быть auth
|
Для того, чтобы тестировать код - было бы неплохо - если бы вы привели структуру вашей таблицы auth.
Давайте проверим последовательно всё на каждом из этапов, изменив скрипт следующим образом.
<?
$dblocation = "127.0.0.1";
$dbname = "test";
$dbuser = "root";
$dbpasswd = "";
session_start();
if (isset($HTTP_POST_VARS['userid']) &&
isset($HTTP_POST_VARS['password']))
{
$userid = $HTTP_POST_VARS['userid'];
$password = $HTTP_POST_VARS['password'];
// Устанавливаем соединение с сервером
$db_connect = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$db_connect)
{
echo( "<P>В настоящий момент сервер
базы данных не доступен,
поэтому корректное отображение
страницы невозможно.</P>" );
mysql_error();
exit();
}
// Выбираем базу данных auth
if (! @mysql_select_db('auth',$db_connect) ) {
echo( "<P>В настоящий момент база данных
auth не доступна, поэтому корректное
отображение страницы невозможно.</P>" );
mysql_error();
exit();
}
$query = "select * from auth
where name='".$userid."' and
pass=password('$password')";
$result = mysql_query($query,$db_connect);
if ($result)
{
if(mysq_num_rows($result)>0)
{
$HTTP_SESSION_VARS['valid_user'] = $userid;
}
else
{
echo( "<P>Странно, но в таблице нет записей
удовлетворяющих запросу</P>" );
mysql_error();
exit();
}
}
else
{
echo( "<P>Ошибка в SQL-запросе</P>" );
mysql_error();
exit();
}
}
?>
<html>
<body>
<h1>Страница Регистрации</h1>
<?
if (isset($HTTP_SESSION_VARS['valid_user']))
{
echo 'Вы зарегестрированы как '.$HTTP_SESSION_VARS['valid_user'].'<br />';
echo '<a href="destroy.php">Exit</a><br />';
}
else
{
if(isset($userid))
{
echo ("Регистрация невозможна!");
}
?>
<form method="post" action="auth.php">
<table>
<tr><td>Имя:</td>
<td><input type="text" name="userid"></td></tr>
<tr><td>Пароль:</td>
<td><input type="password" name="password"></td></tr>
<td><td colspan=2><input type=submit value='Зарегестрировать'>
</td></tr>
</table></form>
<?
}
?>
<a href="members_only.php">Только для зарегестрированных пользователей</a>
</body>
</html>
|
| |
| |
|
|
| |
|
|
| |
для: cheops
(11.08.2004 в 14:42)
| | | прописал я указанный вами скрипт(скопировал)но браузер выдает ошибку
Parse error: parse error, unexpected T_VARIABLE in C:\www\scripts\auth\auth.php on line 2
при том я один в один скопировал скрипт,приведенный выше вами... | |
| |
|
|
| |
 2.2 Кб |
|
| |
для: LimP
(11.08.2004 в 19:31)
| | | Переименуйте файл в аттаче в auth.php.
PS Странно, я скопировал - у меня всё нормально... Вроде нечему там сбоить во второй строке... | |
| |
|
|
| |
|
|
| |
для: cheops
(11.08.2004 в 19:38)
| | | все,сам скрипт заработал,после заполнения имени и пароля,выводит
Странно, но в таблице нет записей удовлетворяющих запросу | |
| |
|
|
| |
|
|
| |
для: LimP
(11.08.2004 в 19:45)
| | | кстати,я вот вам информацию по моей датабейз,все там вроде создано,все таблицы есть,я принтскрин вложил в это сообщение | |
| |
|
|
| |
|
|
| |
для: LimP
(11.08.2004 в 19:56)
| | | А меня пускает... Запись создаёте с использованием функции PASSWORD?
INSERT INTO auth VALUES ('LimP',PASSWORD('password'))
|
| |
| |
|
|
| |
|
|
| |
для: cheops
(11.08.2004 в 21:02)
| | | вы наверное меня не так поняли,я создаю форму,чтобы пользователи могли ввести свое имя и пароль и их данный записались в мускул...пример из вашей книги(раздел сеансовые функции,работа с cookies)...кстати я кажется понял где ошибка,тока не могу ее исправить,вот вы мне дали sql-запрос(ваше последнее сообщение),я его прописал,после этого скрипт сработал,написол,мол вы зарегестрированы как LimP и пароль там мой,который я вводил,так вот если я ввожу другой пароль и другое имя,он мне пишет
Странно, но в таблице нет записей удовлетворяющих запросу
вот,так ошибка по-моему в том,что он не записывает новые имена в mysql...помогите исправить(опираясь на приведенный вами скрипт(ну самый первый)) | |
| |
|
|
| |
|
|
| |
для: LimP
(11.08.2004 в 21:30)
| | | Понятно, но тогда следует использовать SQL-оператор INSERT, который добавит запись в таблицу
<?php
$query = "INSERT INTO auth VALUES ('".$userid."',
password('$password')";
?>
|
Но следует следить, за тем чтобы пользоваетль не мог зарегистрироваться с уже существующим ником...
PS Тут в соседней ветке идёт дискуссия по поводу проверки уже существующих пользователей...
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=171&page=1 | |
| |
|
|
| |
|
|
| |
для: cheops
(11.08.2004 в 22:04)
| | | так вот помогите,я переписал скриптик,сначала он подключается к мускулу,выявляет там все ошибки если есть,затем проверяет,если естьв базе данных такой пользователь с введенным логином,то пишет,что такой пользователь существует,если такого не существует,то он преспокойненько добавляет его в базу данных...вот сам скрипт,тока помогите его отладить,мне браузер пишет ошибку в строке 31...
<?
$dblocation = "127.0.0.1";
$dbname = "test";
$dbuser = "root";
$dbpasswd = "";
session_start();
if (isset($HTTP_POST_VARS['userid']) &&
isset($HTTP_POST_VARS['password']))
{
$userid = $HTTP_POST_VARS['userid'];
$password = $HTTP_POST_VARS['password'];
// Устанавливаем соединение с сервером
$db_connect = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$db_connect)
{
echo( "<P>В настоящий момент сервер
базы данных не доступен,
поэтому корректное отображение
страницы невозможно.</P>" );
mysql_error();
exit();
}
// Выбираем базу данных auth
if (! @mysql_select_db('auth',$db_connect) ) {
echo( "<P>В настоящий момент база данных
auth не доступна, поэтому корректное
отображение страницы невозможно.</P>" );
mysql_error();
exit();
}
$test = mysql_query ("select * from auth where user='$userid'") ;
if (!$test)
{
echo "Ошибка при выполнении запроса";
exit();
}
if(mysql_num_rows($test)>0)
{
echo "<br>Такой юзер уже существует!" . "<br>";
}
else
{
echo "<br>Такого юзера НЕТ!" . "<br>";
}
$request = mysql_query ("insert into users (password, login) values ('$_REQUEST[parol]', '$_REQUEST[login]') ");
if (!$request){
echo mysql_error () . "<br>" ;
exit () ;
}
echo "Ваши данные!" . "<br>" .
"Логин: " . "$_REQUEST[login]" . "<br>" .
"Пароль: " . "$_REQUEST[parol]" . "<br>" ;
}
?>
?>
<html>
<body>
<h1>Страница Регистрации</h1>
<form method="post" action="auth.php">
<table>
<tr><td>Имя:</td>
<td><input type="text" name="userid"></td></tr>
<tr><td>Пароль:</td>
<td><input type="password" name="password"></td></tr>
<td><td colspan=2><input type=submit value='Зарегестрировать'>
</td></tr>
</table></form>
<?
}
?>
<a href="members_only.php">Только для зарегестрированных пользователей</a>
</body>
</html>
|
| |
| |
|
|
| |
|
|
| |
для: LimP
(11.08.2004 в 23:00)
| | | Перед формой два тега ?> а после формы
тоже не понятно к чему относится - по моему лишняя скобка... | |
| |
|
|
| |
|
|
| |
для: cheops
(11.08.2004 в 23:47)
| | | да это косметические ошибки,вы посмотрите пожалуйста на то,что я задумал от этого скрипта,что должно получиться,проверьте,где в скрипте я допустил ошибки... | |
| |
|
|
| |
|
|
| |
для: LimP
(12.08.2004 в 00:38)
| | | ну... пожалуй в строке 31 посмотрите внимательнее на SQL-запрос... $userid - ведь эта переменная будет установлена только при включённой директиве register_globals...
Ещё у вас же в таблице поля называются password, login, а в запросе
select * from auth where user='$userid'
|
у вас поле называется user... | |
| |
|
|
| |
|
|
| |
для: cheops
(12.08.2004 в 01:19)
| | | я вот как переписал,а он мне ошибку выдает,помогите,как правильно переписать???
Parse error: parse error, unexpected T_STRING in C:\www\scripts\auth\auth.php on line 11
<?
$dblocation = "127.0.0.1";
$dbname = "local";
$dbuser = "root";
$dbpasswd = "";
session_start();
$db_connect = mysql_connect($dblocation,$dbuser,$dbpasswd);
mysql_select_db('auth',$db_connect);
$test = mysql_query ("select * from auth where name='$_REQUEST[userid]'") ;
if (!$test)
{
echo "Ошибка при выполнении запроса";
exit();
}
if(mysql_num_rows($test)>0)
{
echo "<br>Такой юзер уже существует!" . "<br>";
}
else
{
echo "<br>Такого юзера НЕТ!" . "<br>";
}
$request = mysql_query ("insert into auth (name, pass) values ('$_REQUEST[userid]', '$_REQUEST[password]') ");
if (!$request){
echo mysql_error () . "<br>" ;
exit () ;
}
echo "Ваши данные!" . "<br>" .
"Логин: " . "$_REQUEST[userid]" . "<br>" .
"Пароль: " . "$_REQUEST[password]" . "<br>" ;
}
?>
<html>
<body>
<h1>Страница Регистрации</h1>
<form method="post" action="auth.php">
<table>
<tr><td>Имя:</td>
<td><input type="text" name="userid"></td></tr>
<tr><td>Пароль:</td>
<td><input type="password" name="password"></td></tr>
<td><td colspan=2><input type=submit value='Зарегестрировать'>
</td></tr>
</table></form>
<a href="members_only.php">Только для зарегестрированных пользователей</a>
</body>
</html>
|
| |
| |
|
|
| |
|
|
| |
для: LimP
(12.08.2004 в 12:19)
| | | Хм... у нас с вами PHP-интерпретаторы как-то по разному на ошибки реагируют :))). У меня этот скрипт выдаёт ошибку в строке 33:
Parse error: parse error, unexpected '}' in E:\main\auth.php on line 33
|
Это сразу после последнего оператора echo, где действительно стоит совершенно лишняя закрывающая фигурная скобка. | |
| |
|
|
| |
|
|
| |
для: cheops
(12.08.2004 в 12:47)
| | | убрал я эту скобку,но он мне все равно выдает ту же ошибку на 11 строке... | |
| |
|
|
| |
|
|
| |
для: LimP
(12.08.2004 в 12:19)
| | | Не знаю... а у меня работает... написал, что я существую :))) Точно в скрипте больше ничего нет? Попробуйте как-нибудь изменить 11 строку:
<?php
$query = "select * from auth where name='".$_REQUEST['userid']."'";
$test = mysql_query ($query) ;
?>
|
| |
| |
|
|
| |
|
|
| |
для: cheops
(12.08.2004 в 13:46)
| | | ну,я скрипт переписал вот так
<?
$dblocation = "127.0.0.1";
$dbname = "local";
$dbuser = "root";
$dbpasswd = "";
session_start();
$db_connect = mysql_connect($dblocation,$dbuser,$dbpasswd);
mysql_select_db('auth',$db_connect);
$query = "select * from auth where name='".$_REQUEST[userid]."'";
$test = mysql_query ($query) ;
if (!$test)
{
echo "Ошибка при выполнении запроса";
exit();
}
if(mysql_num_rows($test)>0)
{
echo "<br>Такой юзер уже существует!" . "<br>";
}
else
{
echo "<br>Такого юзера НЕТ!" . "<br>";
}
$request = mysql_query ("insert into auth (name, pass) values ('$_REQUEST[userid]', '$_REQUEST[password]') ");
if (!$request){
echo mysql_error () . "<br>" ;
exit () ;
}
echo "Ваши данные!" . "<br>" .
"Логин: " . "$_REQUEST[userid]" . "<br>" .
"Пароль: " . "$_REQUEST[password]" . "<br>" ;
?>
<html>
<body>
<h1>Страница Регистрации</h1>
<form method="post" action="auth.php">
<table>
<tr><td>Имя:</td>
<td><input type="text" name="userid"></td></tr>
<tr><td>Пароль:</td>
<td><input type="password" name="password"></td></tr>
<td><td colspan=2><input type=submit value='Зарегестрировать'>
</td></tr>
</table></form>
<a href="members_only.php">Только для зарегестрированных пользователей</a>
</body>
</html>
|
но он выдает теперь другую немного ошибку
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\www\scripts\auth\auth.php on line 11 | |
| |
|
|
| |
|
|
| |
для: LimP
(12.08.2004 в 17:15)
| | | У меня тоже скрипт проходит без проблем. Возможно проблема в настройках PHP. Какая у вас версия.
И пришлите свой php.ini
А еще попробуйте написать вот так - userid взять в кавычки
$query = "select * from auth where name='".$_REQUEST['userid']."'";
|
| |
| |
|
|
| |
|
|
| |
для: glsv (Дизайнер)
(12.08.2004 в 21:21)
| | | взял как вы сказали userid в кавычки,тщетно,та же ошибка,мои пхп.ини я прикрепил к сообщению | |
| |
|
|
| |
|
|
| |
для: LimP
(12.08.2004 в 21:40)
| | | А это тот php.ini, который вы используете?
А как тогда вы работаете с MySql, если он у Вас не подключен в php.ini?
Строка должна быть раскомментирована.
А почему у Вас она была закоментирована? | |
| |
|
|
| |
|
|
| |
для: glsv (Дизайнер)
(12.08.2004 в 23:12)
| | | я раскомментировал строку эту странно,но раньше он у мя работал и с закомментированной строко(я не знал,что она закомментирована)я себе на нем локально движок хупс 2 поставил, а тм тестируестя база данных...
похоже мои интерпретптор охренел просто вконец, теперь я ему прописываю скрипт(двумя сообщениями выше)а он мне:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\www\scripts\auth\auth.php on line 2
это ж просто глупость немыслимая!!!!!!!!!!!я на всякий пожарный вам снова мой пхп.ини прикрепил...там если что,подредактируйте,пожалуйста а то уж слишком много он ошибок порет(очень много еще до этого было)если не трудно,вышлите мне свой пхп.ини я им свой заменю,посмотрим,что будет... | |
| |
|
|
| |
|
|
| |
для: LimP
(12.08.2004 в 23:49)
| | | >у мя работал и с закомментированной строко
А мне кажется, что у Вас где то еще php.ini лежит (другой) и именно с ним апач и работает.
>что,подредактируйте,пожалуйста а то уж слишком много он ошибок порет(очень много еще до этого было)если не трудно,вышлите мне свой пхп.ини я им свой заменю,посмотрим,что будет
Тот, что вы выложили постом выше - тоже вполне нормальный. Все же что у Вас не так или с php.ini или с Апачем.
Апач хотя бы какие то php-скрипты выполняет? | |
| |
|
|
| |
|
|
| |
для: glsv (Дизайнер)
(13.08.2004 в 01:20)
| | | да,выполняет он другие скрипты...а при установке php надо использовать файл php.ini-dist или php.ini-recommended???я использую php.ini-dist | |
| |
|
|
| |
|
|
| |
для: LimP
(13.08.2004 в 13:27)
| | | Для разработки скриптов лучше php.ini-dist... | |
| |
|
|
| |
|
|
| |
для: cheops
(13.08.2004 в 14:19)
| | | ну,вот я его и использую,а что мне делать с этой бедой...может свой php.ini пришлете или еще что посоветуете? | |
| |
|
|
| |
|
|
| |
для: LimP
(13.08.2004 в 19:30)
| | | Перво наперво запустите на машине поиск и найдите все php.ini, если вдруг есть дубли. Уничтожте, а лучше переименуйте их, оставив один в С:/WIMDOWS который и следует настраивать.
PS Кстати, а как вы PHP устанавливаете? Из zip-архива или инсталятора? | |
| |
|
|
| |
|
|
| |
для: cheops
(13.08.2004 в 21:28)
| | | я уже двно произвел поиск других php.ini но никаких лишних не обнаружилось(1)c:\php\php.ini (2)d:\windows\php.ini
а php я устанавливал из zip-архива...ведь на оффициальном сайте тока zip-архив...кстати,надо ли устанавливать Collection of PECL modules for PHP 5.0.1 ??? | |
| |
|
|
| |
|
|
| |
для: LimP
(14.08.2004 в 13:33)
| | | А путь С:\php\ у вас прописан в системе? Если это так то, PHP может брать php.ini и из него. Кстати, а какую версию MySQL вы используете? может дело в ней? Давайте её потестируем - выполним запрос в клиенте mysql и из PHP (у вас и у нас на машине) и посмотрим на результаты.
PS Коллекцию дополнительных модулей можно и установить, но в этом случае каждую из используемых вами библиотек следует прописать в php.ini, с использованимем директивы extension=
PPS Может заведём новую тему, а то у меня дома помегабайтка :))) | |
| |
|
|
| |
|
|
| |
для: cheops
(14.08.2004 в 15:26)
| | | так как тема очень длинная,то ее продолжение переехало
http://softtime.ru/forum/read.php?id_forum=1&id_theme=219&page=1 | |
| |
|
|