здравствуйте, подскажите пожалуйста, в чем косяк скрипта авторизации(он работает но не совсем) :cry: index.php Код (Text): <? //mysql connect session_start(); $res=mysql_query("SELECT * FROM users WHERE login='".$_SESSION['login']."' AND pass='".$_SESSION['pass']."'"); if(mysql_num_rows($res)!=1) { include('login.php'); } else { echo"привет!"; } ?> login.php Код (Text): <? //mysql connect session_start(); if(!isset($_POST['ok'])) { echo"<form method='POST' action='login.php'> Login: <input type='text' name='login' size='15'> Pwd: <input type='password' name='pass' size='15'> <input type='submit' name='ok' value='Вход'></form> "; } else{ $res=mysql_query("SELECT * FROM users WHERE login='".$_POST['login']."' AND password='".$_POST['pass']."'"); if(mysql_num_rows($res)!=1) { echo "Введены не верные логин или пароль"; } else{ $_SESSION['login']=$_POST['login']; $_SESSION['pass']=$_POST['pass']; header('Location:../index.php'); // если вместо хедера я поставлю echo"hello"; то скрипт выведет его } } ?> а мне надо чтобы echo выводилось в файле index.php, а он все равно выводит пустую форму. так что возможно косяк в первом файле. подскажите плз
Чтото все помешались прям на этой авторизации последнее время. 1. Не совсем понятно, что значит "работает, но не совсем". Объясни. 2. Ставь следующий код перед запросом: PHP: <?php var_dump("SELECT * FROM users WHERE login='".$_SESSION['login']."' AND pass='".$_SESSION['pass']."'") Тебе высветит запрос - попробуй этот запрос выполнить в пхпМайАдмин и посмотреть на результат
PHP: <? // Замени это: if(!isset($_POST['ok'])) // На это: if(empty($_POST['login'])) // Должно работать
мне надо чтобы echo выводилось в файле index.php, а он все равно выводит пустую форму в каких файлах? я вставил в обоих и сайт ваще упал 0_о
var_dump - это echo для программиста. А где у тебя запрос в скрипте? Поищи. ты хочешь, чтобы вывелось "привет!", да?
если логин.пхп такой: Код (Text): <? //mysql connect session_start(); if(!isset($_POST['ok'])) { echo"<form method='POST' action='login.php'> Login: <input type='text' name='login' size='15'> Pwd: <input type='password' name='pass' size='15'> <input type='submit' name='ok' value='Вход'></form> "; } else{ $res=mysql_query("SELECT * FROM users WHERE login='".$_POST['login']."' AND password='".$_POST['pass']."'"); if(mysql_num_rows($res)!=1) { echo "Введены не верные логин или пароль"; } else{ $_SESSION['login']=$_POST['login']; $_SESSION['pass']=$_POST['pass']; echo"вы ввели верный логин и пароль"; } } ?> то в бланке выводит что верный логин и пароль, но мне надо в индексе вместо инклуды формы
Простите за оффтоп, но пишите одним сообщением, а не тремя ( х*р поймёшь всё так ) Код (Text): if(mysql_num_rows($res)!=1) { echo "Введены не верные логин или пароль"; } А это что? О_о Проверка существования полей что ли? :shock:
да. скрипт взят от сюда http://addphp.ru/php_script/4-ispolzova ... v-php.html . подскажите как лучше, если это не вариант
Лучше написать свой скрипт и выложить здесь, а мы проверим. Лучше не браться за то, что не знаешь как делать На этом форуме прекрасно могут наводить на мысль, а со скриптами, которые с и-нета не очень дружат многие
Вот мой скрипт, но он работает при условии, что сайт построен одним файлом с гет переменными для страниц, а при нескольких файлах работает некорректно login.php Код (Text): <form action="enter.php" method="post"> Login:<input type="text" name="login"><br> Password:<input type="password" name="pass"><br> <input type="submit" value="Sign In!"> </form> enter.php Код (Text): <?php $l=stripslashes(htmlspecialchars($_POST['login'])); $p=stripslashes(strip_tags($_POST['pass'])); if(!$l || strlen($l)>12 || !$p || strlen($p)>32) { header('Location:login.php'); } else { setcookie('username',$l); setcookie('password',$p); header('Location:index.php'); } ?> index.php Код (Text): <?php include('func.php'); if(user_logged_in()) { echo 'You are logged in! Congratulations!'; } else { echo 'You are not logged in!'; } ?> func.php Код (Text): <?php function user_logged_in() { include('data.php'); if($_COOKIE['username']==$valid_username && $_COOKIE['password']==$valid_password); { return true; } else { return false; } } ?> data.php Код (Text): <?php $valid_username='Guest'; $valid_password='12345'; ?> а мне надо при отдельных файлах для каждого раздела сайта
я сохраняю коды в dreamweaver. пробовал в notepad++ без BOM'a , так все равно денвер ругается на сессию в первом скрипте
Научитесь отлаживать: 1. Поставьте вывод ошибок на максимальный уровень 2. Проработайте логику кода, на бумаге можете даже 3. Проследите за данными, выводите их везде, где они проходят, чтобы выяснить, где что-то не так. 4. Посмотрите, что база возвращает phpfaq.ru/debug
в том то и дело что ошибок, нет, но в том случае если сайт построен на нескольких файлах, авторизация не рушится, а при переходе на другую страницу просто не отображается факт авторизации, хотя достаточно эту страницу обновить, так сразу все в порядке становится