За последние 24 часа нас посетили 19363 программиста и 1615 роботов. Сейчас ищут 878 программистов ...

Регистрация!

Тема в разделе "PHP для новичков", создана пользователем natsuho, 18 фев 2010.

  1. natsuho

    natsuho Активный пользователь

    С нами с:
    6 фев 2010
    Сообщения:
    8
    Симпатии:
    0
    Добрый день!!!

    Необходимо выполнить регистрацию пользователей!

    При нажатии кнопки Создать выходит "; } else { exit("Ошибка при добавлении нового пользователя"); } ?>

    index.php:
    PHP:
    1. <?php
    2.    require_once("security_mod.php");
    3. ?>
    4.  
    5. Привет, <?php echo $_SERVER['PHP_AUTH_USER']; ?>!
    6. Это секретная страница, доступ на которую может получить только авторизовавшийся пользователь
    7. <form action=adduser.php method=post>
    8. Имя <input type=text name=name><br>
    9. Пароль <input type=password name=pass><br>
    10. Пароль <input type=password name=pass_again><br>
    11. <input type=submit name=sub value='Создать'>
    12. </form>
    adduser.php:
    PHP:
    1. <?php
    2.  // Устанавливаем соединение с базой данных
    3.  require_once("config.php");
    4.  // Модуль безопасности
    5.  require_once("security_mod.php");
    6. ?>
    7.  
    8. <?php
    9.   // Проверяем переданы ли имя пользователя и пароль
    10.   if(empty($_POST['name'])) exit("Не указано имя нового пользователя");
    11.   if(empty($_POST['pass'])) exit("Не указан пароль пользователя");
    12.  
    13.   // Проверяем равны ли пароли
    14.   if($_POST['pass'] != $_POST['pass_again']) exit("Пароли не равны");
    15.  
    16.   // Проверяем, чтобы не было никаких SQL-инъекций
    17.   {
    18.      $_POST['name'] = mysql_escape_string($_POST['name']);
    19.      $_POST['pass'] = mysql_escape_string($_POST['pass']);
    20.   }
    21.   $_POST['name'] = str_replace("'","`",$_POST['name']);
    22.   $_POST['pass'] = str_replace("'","`",$_POST['pass']);
    23.  
    24.   // Если всё нормально создаём нового пользователя
    25.   $query = "INSERT INTO userlist VALUES (NULL,'$_POST[name]','".md5($_POST['pass'])."')";
    26.   if(mysql_query($query))
    27.   {
    28.    echo "Новый пользователь создан";
    29.     echo "<HTML><HEAD>
    30.            <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
    31.            </HEAD></HTML>";
    32.   }
    33.   else
    34.   {
    35.     exit("Ошибка при добавлении нового пользователя");
    36.   }
    37. ?>
    config.php:
    PHP:
    1. <?php
    2.   require_once("security_mod.php");
    3. ?>
    4.  
    5. <?php
    6.   $dblocation = "localhost";
    7.   $dbname = "karta";
    8.   $dbuser = "root";
    9.   $dbpasswd = "123";
    10.   $dbcnx = @mysql_pconnect($dblocation,$dbuser,$dbpasswd);
    11.   if (!$dbcnx) exit("<p>К сожалению, не доступен сервер MySQL</p>");
    12.   if (!@mysql_select_db($dbname,$dbcnx)) exit("<p>К сожалению, не доступна база данных</p>");
    13. ?>
    security_mod.php:
    PHP:
    1. <?php
    2.    // Устанавливаем соединение с базой данных
    3.   require_once("config.php");
    4.   // Если пользователь не авторизовался - авторизуемся
    5.   if(!isset($_SERVER['PHP_AUTH_USER']))
    6.   {
    7.     Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    8.     Header("HTTP/1.0 401 Unauthorized");
    9.     exit();
    10.   }
    11.   else
    12.   {
    13.     // Утюжим переменные $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'],
    14.     // чтобы мышь не проскочила
    15.     if (!get_magic_quotes_gpc())
    16.     {
    17.       $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
    18.       $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
    19.     }
    20.     $_SERVER['PHP_AUTH_USER'] = str_replace("'","`",$_SERVER['PHP_AUTH_USER']);
    21.     $_SERVER['PHP_AUTH_PW'] = str_replace("'","`",$_SERVER['PHP_AUTH_PW']);
    22.    
    23.     $query = "SELECT pass FROM userlist WHERE name='".$_SERVER['PHP_AUTH_USER']."'";
    24.     $lst = @mysql_query($query);
    25.     // Если ошибка в SQL-запросе - выдаём окно
    26.     if(!$lst)
    27.     {
    28.       Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    29.       Header("HTTP/1.0 401 Unauthorized");
    30.       exit();
    31.     }
    32.     // Если такого пользователя нет - выдаём окно
    33.     if(mysql_num_rows($lst) == 0)
    34.     {
    35.       Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    36.       Header("HTTP/1.0 401 Unauthorized");
    37.       exit();
    38.     }
    39.     // Если все проверки пройдены, сравниваем хэши паролей
    40.     $pass = @mysql_fetch_array($lst);
    41.     if(md5($_SERVER['PHP_AUTH_PW']) != $pass['pass'])
    42.     {
    43.       Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    44.       Header("HTTP/1.0 401 Unauthorized");
    45.       exit();
    46.     }
    47.   }
    48. ?>
    Дамп:
    Код (Text):
    1. CREATE TABLE userlist (
    2.   id_user int(11) NOT NULL auto_increment,
    3.   name tinytext NOT NULL,
    4.   pass tinytext NOT NULL,
    5.   PRIMARY KEY  (id_user)
    6. ) TYPE=MyISAM;
    7. INSERT INTO userlist VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3');
    Посмотрите, пожалуйста, где здеь ошибка...что не так написано.....и как разрешить проблему???Заранее спасибо=)
     
  2. kotyara

    kotyara Активный пользователь

    С нами с:
    17 фев 2010
    Сообщения:
    163
    Симпатии:
    0
    прям выходит точно такая строка ; } else { exit("Ошибка при добавлении нового пользователя"); } ?>
    ???
    или просто "Ошибка при добавлении нового пользователя" ?
     
  3. natsuho

    natsuho Активный пользователь

    С нами с:
    6 фев 2010
    Сообщения:
    8
    Симпатии:
    0
    Прям вот так и выходит:

    ; } else { exit("Ошибка при добавлении нового пользователя"); } ?>
     
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    cекретная страница :D
     
  5. kotyara

    kotyara Активный пользователь

    С нами с:
    17 фев 2010
    Сообщения:
    163
    Симпатии:
    0
    ну не знаю попробуй поменять на это:
    PHP:
    1.  
    2.  <?php
    3.    // Устанавливаем соединение с базой данных
    4.    require_once("config.php");
    5.    // Модуль безопасности
    6.    require_once("security_mod.php");
    7.    
    8.     // Проверяем переданы ли имя пользователя и пароль
    9.     if(empty($_POST['name'])) exit("Не указано имя нового пользователя");
    10.     if(empty($_POST['pass'])) exit("Не указан пароль пользователя");
    11.    
    12.     $name     = $_POST['name'];
    13.     $password = $_POST['pass'];
    14.  
    15.     // Проверяем равны ли пароли
    16.     if($password != $_POST['pass_again']) exit("Пароли не равны");
    17.  
    18.     // Проверяем, чтобы не было никаких SQL-инъекций
    19.     if (!get_magic_quotes_gpc()){
    20.       $name     = mysql_escape_string($name);
    21.       $password = mysql_escape_string($password);
    22.     }
    23.     $name     = str_replace("'","`",$name);
    24.     $password = str_replace("'","`",$password);
    25.  
    26.     // Если всё нормально создаём нового пользователя
    27.     $query = "INSERT INTO userlist (`name`,`pass`) VALUES ('$name','".md5($password)."')";
    28.     if(mysql_query($query)){
    29.       echo "Новый пользователь создан";
    30.       echo "<HTML><HEAD>
    31.              <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
    32.              </HEAD></HTML>";
    33.     }
    34.     else exit("Ошибка при добавлении нового пользователя");
    35.    
    36.   ?>
     
  6. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Судя по всему файл adduser.php не выполняется сервером как php файл. А вот почему это происходит я не знаю...
     
  7. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    судя по всему где-то пропущена кавычка, скорее всего в строке 32. Хотя может и раньше на пару строк.
     
  8. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    PHP:
    1. CONTENT='0; URL=index.php'
    может тут?
     
  9. natsuho

    natsuho Активный пользователь

    С нами с:
    6 фев 2010
    Сообщения:
    8
    Симпатии:
    0
    kotyara та же ошибка(

    Padaboo та же ошибка(
     
  10. kotyara

    kotyara Активный пользователь

    С нами с:
    17 фев 2010
    Сообщения:
    163
    Симпатии:
    0
    natsuho.
    не поленился поставил ваши скрипты к себе немного почистил код и все заработало как и задумывалось по видимому...
    подобных ошибок не встретил, если надо могу предоставить вам слегка почищенные мной скрипты - пишите в личку
     
  11. natsuho

    natsuho Активный пользователь

    С нами с:
    6 фев 2010
    Сообщения:
    8
    Симпатии:
    0
    Спасибо Вам большое...Ждите письма в личке=)
     
  12. kotyara

    kotyara Активный пользователь

    С нами с:
    17 фев 2010
    Сообщения:
    163
    Симпатии:
    0
    написал ссылку в личку - качай
     
  13. natsuho

    natsuho Активный пользователь

    С нами с:
    6 фев 2010
    Сообщения:
    8
    Симпатии:
    0
    Вопрос остается прежним!!!Все та же ошибка(((К сожалению=(
     
  14. Xu4kok

    Xu4kok Активный пользователь

    С нами с:
    4 мар 2010
    Сообщения:
    5
    Симпатии:
    0
    Проверяй настройки. PHP у тебя не работает, по этому когда программа доходит до строки 32 ( </HEAD></HTML>";) скобка > воспринимается как закрытие тега. У меня была похожая ошибка. Переустановил и перенастроил всю связку - помогло.
     
  15. vuzy

    vuzy Активный пользователь

    С нами с:
    11 мар 2010
    Сообщения:
    199
    Симпатии:
    0
    Адрес:
    киев
    таки да самое логичное объяснение это то что не работает php.
    что у тебя за сервер? самопальная связка MySQL PHP APACHE? или дистрибутив денвера?