<? define('PROTECTOR', 1); session_start(); if(!empty($_POST['log'])){ $log = htmlspecialchars(stripslashes(addslashes($_POST['log']))); $pass = htmlspecialchars(stripslashes(addslashes($_POST['pas'])));} if(!empty($_GET['login'])){ $log = htmlspecialchars(stripslashes(addslashes($_GET['login']))); $pass = htmlspecialchars(stripslashes(addslashes($_GET['pas'])));} ///////////////////////////////////////////////////// require_once ('files/db.php');//подключаем бд ///////////////////// $pas=md5($pass); $req = mysql_query("SELECT * FROM `users` WHERE `usr` = '$log' and `pass`='$pas' LIMIT 1"); //////////////////////////// $udata = mysql_fetch_array($req); $avto=mysql_num_rows($req); $set = mysql_query("SELECT * FROM `set` WHERE `usr` = '$log'LIMIT 1"); $set=mysql_num_rows($set); //////////////////////////////////////////////////////// //////////////////////////////////////////////////////// //////////////////////////////////////////////////////// if ($avto==1 and $log==$udata[usr]){ if ($_POST['mem'] == 1) { // Установка данных COOKIE $clog = base64_encode($log); $cpas = $pas; setcookie("log", $clog, time() + 3600 * 24 * 365); setcookie("pas", $cpas, time() + 3600 * 24 * 365); }else{ $clog = base64_encode($log); $cpas = $pas; setcookie("log", $clog, time() + 3600 * 24 ); setcookie("pas", $cpas, time() + 3600 * 24 ); } $_SESSION['log'] = $log; $_SESSION['pas'] = $pas; $_SESSION['pass'] = $pass; if(isset($_SESSION['log'])){ header ("Location: index.php?cookie"); } }else { header ("Location: index.php?error"); exit; } ?> это код,ошибки: setcookie("log", $clog, time() + 3600 * 24 * 365); setcookie("pas", $cpas, time() + 3600 * 24 * 365); и здесь header ("Location: index.php?cookie"); использую Open Server c php 5.3 Apache 2.2 Я так понял что что-то не так с куки, потому что на веб хостинге от hostinger.ru все работает без ошибок ПОМОГИТЕ новичок
Научись думать до того как писать код. Научись знать что делает функция, а не использовать на авось. Читай доки. Ошибка какая?
все черным по оранжевому написано. заголовки отправились в дб-1 а вы пытаетесь их изменить в энтер-36. одна из популярных ошибок новичков. сами нагуглите информацию?
Где что изменить в db.php или enter.php?Просто это происходит при нажатии вход,ну когда входишь в игру Добавлено спустя 2 минуты 26 секунд: Файл db.php Код: <?php defined('PROTECTOR') or die('Error: restricted access'); session_start(); $db_host = "localhost"; $db_user = "root"; $db_table = "game"; $db_pass = "**********"; $connect = @ mysql_pconnect($db_host, $db_user, $db_pass) or die('cannot connect to server'); @ mysql_select_db($db_table) or die('cannot connect to db'); @ mysql_query("SET NAMES 'utf8'", $connect); ##################### SQL ################ @include('files/sql.php'); $stop_injection = new InitVars(); $stop_injection->checkVars(); ##################### SQL ################ ?>
то есть вы даже не удосужились погуглить одну из самых популярных ошибок новичков? понятно. рассказываю. у вас наверное мне так кажется судя по всему файлики в мультибайтной кодировочке ю-ти-эф-восемь. семейство кодировок ю-ти-эф очень гибкое и для нестандартных поведений оповещает текстовый процессор о порядке следования байтов. вот для этого оповещения используется так называемый байт-ордер-марк - это такие 2-4 байта которые идут в самом начале файла. когда вы открываете файл своим текстовым редактором он пользуясь случаем и знанием проглатывает эти байты и все остальное содержимое выдает вам в неком текстовом представлении. пхп-машине про этот бом тоже известно, в связи с чем поток символов у клиента получается корректным. но для того чтоб уведомить клиента о порядке байт нужно ему этот бом передать. что и делается у вас. в файле дб первые байты на самом деле бом, их пхп машина отправляет клиенту в потоке. а когда начинается поток данных заканчивается поток заголовков. именно на это и наталкивается файл энтер в линии 36 - он пытается доотправить заголовки, но уже поздно. очевидным решением вашей проблемы является сохранение всех исходных кодов в кодировки без метки порядка байтов. умеет ли это делать ваш текстовый редактор или нет я к сожалению не могу за вас сказать. я только знаю что вам лениво было погуглить. есть еще умельцы которые используют буфер вывода для предотвращения преждевременного спуска. но это очень ленивое решение. впрочем тем кто ленится гуглить оно может подойти. проблема только в том что бом может отправиться до того как стартует буфер вывода... но это уже совсем другая история...
Re: Аутентификация на странице <? define('PROTECTOR', 1); ob_start(); if(!empty($_POST['log'])){ $log = htmlspecialchars(stripslashes(addslashes($_POST['log']))); $pass = htmlspecialchars(stripslashes(addslashes($_POST['pas'])));} if(!empty($_GET['login'])){ $log = htmlspecialchars(stripslashes(addslashes($_GET['login']))); $pass = htmlspecialchars(stripslashes(addslashes($_GET['pas'])));} ///////////////////////////////////////////////////// require_once ('files/db.php');//подключаем бд ///////////////////// $pas=md5($pass); $req = mysql_query("SELECT * FROM `users` WHERE `usr` = '$log' and `pass`='$pas' LIMIT 1"); //////////////////////////// $udata = mysql_fetch_array($req); $avto=mysql_num_rows($req); $set = mysql_query("SELECT * FROM `set` WHERE `usr` = '$log'LIMIT 1"); $set=mysql_num_rows($set); //////////////////////////////////////////////////////// //////////////////////////////////////////////////////// //////////////////////////////////////////////////////// if ($avto==1 and $log==$udata[usr]){ if ($_POST['mem'] == 1) { // Установка данных COOKIE $clog = base64_encode($log); $cpas = $pas; setcookie("log", $clog, time() + 3600 * 24 * 365); setcookie("pas", $cpas, time() + 3600 * 24 * 365); }else{ $clog = base64_encode($log); $cpas = $pas; setcookie("log", $clog, time() + 3600 * 24 ); setcookie("pas", $cpas, time() + 3600 * 24 ); } $_SESSION['log'] = $log; $_SESSION['pas'] = $pas; $_SESSION['pass'] = $pass; if(isset($_SESSION['log'])){ header ("Location: index.php?cookie"); } }else { header ("Location: index.php?error"); ob_end_flush(); exit; ?> сделал так,но теперь не может выйти с персонажа
exit убери обфлаш засунь в конец, сейчас он у тебя в блоке else. И эта... начинай задумываться над предназначением функций.
$_SESSION['log'] = $log; $_SESSION['pas'] = $pas; $_SESSION['pass'] = $pass; if(isset($_SESSION['log'])){ header ("Location: index.php?cookie"); } }else { header ("Location: index.php?error");exit; ob_end_flush(); ?> ТАК? ( ! ) Parse error: syntax error, unexpected $end in C:\OpenServer\domains\test.ru\enter.php on line 50 теперь еще такая ошибка,а линия 50 это ?> я обязательно все выучу,просто только книгу прочитал Добавлено спустя 2 минуты 54 секунды: Ой все сделал,скобку фигурную забыл=)