Добрый день!!! Необходимо выполнить регистрацию пользователей! При нажатии кнопки Создать выходит "; } else { exit("Ошибка при добавлении нового пользователя"); } ?> index.php: PHP: <?php require_once("security_mod.php"); ?> Привет, <?php echo $_SERVER['PHP_AUTH_USER']; ?>! Это секретная страница, доступ на которую может получить только авторизовавшийся пользователь <form action=adduser.php method=post> Имя <input type=text name=name><br> Пароль <input type=password name=pass><br> Пароль <input type=password name=pass_again><br> <input type=submit name=sub value='Создать'> </form> adduser.php: PHP: <?php // Устанавливаем соединение с базой данных require_once("config.php"); // Модуль безопасности require_once("security_mod.php"); ?> <?php // Проверяем переданы ли имя пользователя и пароль if(empty($_POST['name'])) exit("Не указано имя нового пользователя"); if(empty($_POST['pass'])) exit("Не указан пароль пользователя"); // Проверяем равны ли пароли if($_POST['pass'] != $_POST['pass_again']) exit("Пароли не равны"); // Проверяем, чтобы не было никаких SQL-инъекций if (!get_magic_quotes_gpc()) { $_POST['name'] = mysql_escape_string($_POST['name']); $_POST['pass'] = mysql_escape_string($_POST['pass']); } $_POST['name'] = str_replace("'","`",$_POST['name']); $_POST['pass'] = str_replace("'","`",$_POST['pass']); // Если всё нормально создаём нового пользователя $query = "INSERT INTO userlist VALUES (NULL,'$_POST[name]','".md5($_POST['pass'])."')"; if(mysql_query($query)) { echo "Новый пользователь создан"; echo "<HTML><HEAD> <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'> </HEAD></HTML>"; } else { exit("Ошибка при добавлении нового пользователя"); } ?> config.php: PHP: <?php require_once("security_mod.php"); ?> <?php $dblocation = "localhost"; $dbname = "karta"; $dbuser = "root"; $dbpasswd = "123"; $dbcnx = @mysql_pconnect($dblocation,$dbuser,$dbpasswd); if (!$dbcnx) exit("<p>К сожалению, не доступен сервер MySQL</p>"); if (!@mysql_select_db($dbname,$dbcnx)) exit("<p>К сожалению, не доступна база данных</p>"); ?> security_mod.php: PHP: <?php // Устанавливаем соединение с базой данных require_once("config.php"); // Если пользователь не авторизовался - авторизуемся if(!isset($_SERVER['PHP_AUTH_USER'])) { Header("WWW-Authenticate: Basic realm=\"Admin Page\""); Header("HTTP/1.0 401 Unauthorized"); exit(); } else { // Утюжим переменные $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'], // чтобы мышь не проскочила if (!get_magic_quotes_gpc()) { $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']); $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']); } $_SERVER['PHP_AUTH_USER'] = str_replace("'","`",$_SERVER['PHP_AUTH_USER']); $_SERVER['PHP_AUTH_PW'] = str_replace("'","`",$_SERVER['PHP_AUTH_PW']); $query = "SELECT pass FROM userlist WHERE name='".$_SERVER['PHP_AUTH_USER']."'"; $lst = @mysql_query($query); // Если ошибка в SQL-запросе - выдаём окно if(!$lst) { Header("WWW-Authenticate: Basic realm=\"Admin Page\""); Header("HTTP/1.0 401 Unauthorized"); exit(); } // Если такого пользователя нет - выдаём окно if(mysql_num_rows($lst) == 0) { Header("WWW-Authenticate: Basic realm=\"Admin Page\""); Header("HTTP/1.0 401 Unauthorized"); exit(); } // Если все проверки пройдены, сравниваем хэши паролей $pass = @mysql_fetch_array($lst); if(md5($_SERVER['PHP_AUTH_PW']) != $pass['pass']) { Header("WWW-Authenticate: Basic realm=\"Admin Page\""); Header("HTTP/1.0 401 Unauthorized"); exit(); } } ?> Дамп: Код (Text): CREATE TABLE userlist ( id_user int(11) NOT NULL auto_increment, name tinytext NOT NULL, pass tinytext NOT NULL, PRIMARY KEY (id_user) ) TYPE=MyISAM; INSERT INTO userlist VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3'); Посмотрите, пожалуйста, где здеь ошибка...что не так написано.....и как разрешить проблему???Заранее спасибо=)
прям выходит точно такая строка ; } else { exit("Ошибка при добавлении нового пользователя"); } ?> ??? или просто "Ошибка при добавлении нового пользователя" ?
ну не знаю попробуй поменять на это: PHP: <?php // Устанавливаем соединение с базой данных require_once("config.php"); // Модуль безопасности require_once("security_mod.php"); // Проверяем переданы ли имя пользователя и пароль if(empty($_POST['name'])) exit("Не указано имя нового пользователя"); if(empty($_POST['pass'])) exit("Не указан пароль пользователя"); $name = $_POST['name']; $password = $_POST['pass']; // Проверяем равны ли пароли if($password != $_POST['pass_again']) exit("Пароли не равны"); // Проверяем, чтобы не было никаких SQL-инъекций if (!get_magic_quotes_gpc()){ $name = mysql_escape_string($name); $password = mysql_escape_string($password); } $name = str_replace("'","`",$name); $password = str_replace("'","`",$password); // Если всё нормально создаём нового пользователя $query = "INSERT INTO userlist (`name`,`pass`) VALUES ('$name','".md5($password)."')"; if(mysql_query($query)){ echo "Новый пользователь создан"; echo "<HTML><HEAD> <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'> </HEAD></HTML>"; } else exit("Ошибка при добавлении нового пользователя"); ?>
Судя по всему файл adduser.php не выполняется сервером как php файл. А вот почему это происходит я не знаю...
natsuho. не поленился поставил ваши скрипты к себе немного почистил код и все заработало как и задумывалось по видимому... подобных ошибок не встретил, если надо могу предоставить вам слегка почищенные мной скрипты - пишите в личку
Проверяй настройки. PHP у тебя не работает, по этому когда программа доходит до строки 32 ( </HEAD></HTML>" скобка > воспринимается как закрытие тега. У меня была похожая ошибка. Переустановил и перенастроил всю связку - помогло.
таки да самое логичное объяснение это то что не работает php. что у тебя за сервер? самопальная связка MySQL PHP APACHE? или дистрибутив денвера?