Почему не работает код скрипта??

boxgorn

Новичок
Почему не работает код скрипта??

Помогите пожалуйста, я только начинаю изучать PHP и работу с MySQL. Вот этот код я разбираю для примера. Так сказать опыта набраться. Но он не работает правильно. У меня стоит web-сервер Денвер под виндой. С базой данных связь есть я проверил. Происходит следующее. В базе в таблицу занес имя и пароль пользователя. Но при наборе этих параметров в окне ввода и нажатии кнопки "зарегистрироваться" появляется надпись "Регистрация невозможна".
PHP:
<?
$dblocation = "localhost";
$dbname = "auth";
$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($dbname,$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">Выход</a><br />';
}
else
{
        if(isset($userid))
        {
                
                echo("Регистрация невозможна.");
        }
        ?>
        <form metod="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>
        <tr><td colspan=2><input type=submit value='Зарегистрировать'>
        </td></tr>
        </table></form>
        <?
}
?>
<br>
<a href="members_only.php">Только для зарегистрированных пользователей</a>
</body>
</html>
-~{}~ 16.07.06 03:31:

забыл написать, этот код находился в файле auth.php. Т.е. ссылается во время нажатья на кнопку "зарегистрировать" сам на себя.
 

0xHH

Новичок
PHP:
$result = mysql_query($query) or die("Query failed : " . mysql_error());
echo $result;
Замечание: Строка запроса НЕ должна заканчиваться точкой с запятой.
 

boxgorn

Новичок
Автор оригинала: 0xHH
PHP:
$result = mysql_query($query) or die("Query failed : " . mysql_error());
echo $result;
Замечание: Строка запроса НЕ должна заканчиваться точкой с запятой.
Так до этого дело не доходит.
Все зависит от
PHP:
if (isset($HTTP_SESSION_VARS['valid_user']))
Кто такой 'valid_user'?
 

HraKK

Мудак
Команда форума
PHP:
   if($result) 
        { 
           $HTTP_SESSION_VARS['valid_user'] = $userid; 
        }
При регистрации обьявляется.

НО! Проблема думаю либо в том что у него пхп5 либо с мускулем.

В любом случии проблема находится ОБЫКНОВЕННЫМ дебагом, и если автору лень потратит 5 минут на прочтение статьи и 5 мин на поиск ошибки. То мне лень читать его ахинею тоже.

-~{}~ 16.07.06 00:52:

Бррр
boxgorn
То есть ты знаешь в чем проблема и выставляешь на обсуждение - типа попробуйте догадайтесь?
 

0xHH

Новичок
Вы в этом уверены?

PHP:
<?
$dblocation = "localhost";
$dbname = "auth";
$dbuser = "root";
$dbpasswd = "";

session_start();

echo "1";

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($dbname,$db_connect);
        $query = "select * from auth where name='".$userid."' and pass = password('$password');";
        $result = mysql_query($query) or die("Query failed : " . mysql_error());
echo $result;
        echo "2";
        if($result)
        {
           $HTTP_SESSION_VARS['valid_user'] = $userid;
           echo "3";
        }
}
?>
<html>
<body>
<h1> Страница регистрации </h1>
<?
         echo "4";
if (isset($HTTP_SESSION_VARS['valid_user']))
{
        echo "5";
        echo 'Вы зарегистрированы как '.$HTTP_SESSION_VARS['valid_user'].'<br />';
        echo '<a href="destroy.php">Выход</a><br />';
}
else
{
        echo "6";
        if(isset($userid))
        {
                
                echo("Регистрация невозможна.");
                echo "7";
        }
        ?>
Вывод в студию.
 

boxgorn

Новичок
Вывод следующий.
При старте скрипта путь проходит через 1-4-6
При вводе пароля и логина и нажатии на кнопку "зарегистрировать" путь 1-4-6-7
Вот я и спросил, откуда берется VALID_USER ?
 

0xHH

Новичок
Пример 12-9. Доступ к данным из простой HTML POST-формы

PHP:
<?php 
// Доступно, начиная с PHP 4.1.0

   echo $_POST['username'];
   echo $_REQUEST['username'];

   import_request_variables('p', 'p_');
   echo $p_username;

// Доступно, начиная с PHP 3. Начиная с PHP 5.0.0, эти длинные предопределенные
// переменные могут быть отключены директивой register_long_arrays.

   echo $HTTP_POST_VARS['username'];

// Доступно, если директива PHP register_globals = on. Начиная
// с PHP 4.2.0, значение по умолчанию register_globals = off.
// Использование/доверие этому методу непредпочтительно.

   echo $username;
?>

HTTP_POST_VARS замени на $_POST

-~{}~ 16.07.06 01:08:

register_long_arrays boolean
Сообщает PHP, следует ли регистрировать устаревшие длинные предопределенные переменные типа $HTTP_*_VARS. Если включены (по умолчанию), длинные предопределенные переменные PHP, например $HTTP_GET_VARS, будут объявлены. Если вы их не используете, рекомендуем отключить их из соображений производительности. Вместо них следует использовать суперглобальные массивы, например $_GET.
 

boxgorn

Новичок
Кстати примерчик то я из книжки по PHP5 взял ;-(
Огромное спасибо OxHH!! Я уже 3 дня над ним сижу и никак понять не могу почему такая простая штуковина и не работает.
 

0xHH

Новичок
boxgorn

Из 1-4-6-7 понятно, что if (isset($HTTP_POST_VARS['userid']) && isset($HTTP_POST_VARS['password'])) выдаёт false, а значит $HTTP_POST_VARS не isset-ятся. Можно проверить через print_r.
 

boxgorn

Новичок
а $HTTP_SESSION_VARS чем заменяется? И вообще можно где-нибудь хелп посмотреть по соответствию новых и старых команд PHP?
 

SiMM

Новичок
> Кстати примерчик то я из книжки по PHP5 взял ;-(
Полное название книжки - в студию.
[m]language.variables.predefined[/m]
$HTTP_*_VARS по прежнему доступны, но не рекомендуются.
 

boxgorn

Новичок
Название книжки "Самоучитель по PHP 5" автор Кузнецов максим, Игорь Симдянов
 
Сверху