Подскажите пожалуйста!!! Использую такой код входа в админку Код (Text): <?php session_start(); $login_screen = "<center><table border=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" cellpadding=\"0\" cellspacing=\"3\"> <form method=post action=/admin/><input type=hidden name=form value=sent><tr> <td align=\"right\" valign=\"top\"><b> <font face=\"$fontface\" size=\"2\">Логин</font>:</b></td> <td align=\"left\" valign=\"top\"> <input type=\"text\" name=\"login\" size=\"25\" style=\"font-family: $fontface; font-size: 9pt; font-weight: bold\"></td> </tr><tr><td align=\"right\" valign=\"top\"> <font face=\"$fontface\" size=\"2\"><b>Пароль:</b></font></td> <td align=\"left\" valign=\"top\"> <input type=\"password\" name=\"passwd\" size=\"25\" style=\"font-size: 9pt; font-family: $fontface; font-weight: bold\"></td> </tr><tr><td></td><td align=\"left\" valign=\"top\"> <input type=\"submit\" value=\"Вход\" style=\"font-family: $fontface; font-size: 9pt; font-weight: bold; float: right\"></td> </tr></form></table></center>"; if ($_COOKIE['ref']) { setcookie("ref", $_COOKIE['ref'], time()-964000); } if (!isset($_SESSION['asess_name']) || !isset($_SESSION['asess_passwd'])) { if ($_POST['form'] == 'sent') { if ($_POST['login'] == "" || $_POST['passwd'] == "") { echo "<center> <table> <tr bgcolor=\"#CCCCCC\"> <td><b>Вход в админ панель</b></td> </tr> <tr bgcolor=\"#CCCCCC\"> <td><b>$login_screen</b></td> </tr> </table> </center>"; echo("<script>alert('Логин и Пароль не могут быть пустыми!');</script>"); session_destroy(); mysql_close; exit; } else { $_SESSION['asess_name'] = ($_POST['login']); $_SESSION['asess_passwd'] = ($_POST['passwd']); header("Location: /admin/admin_log/"); } mysql_close; exit; } else { echo "<center> <table> <tr bgcolor=\"#CCCCCC\"> <td><b>Вход в админ панель</b></td> </tr> <tr bgcolor=\"#CCCCCC\"> <td><b>$login_screen</b></td> </tr> </table> </center>"; session_destroy(); mysql_close; exit; } } else { $username = $_SESSION['asess_name']; $pass = $_SESSION['asess_passwd']; $q = "SELECT login FROM `admin`"; $resy = mysql_query($q); while($row = mysql_fetch_array($resy)) { $db_login = $row["login"]; }; $qt = "SELECT passwd FROM `admin`"; $resyt = mysql_query($qt); while($row = mysql_fetch_array($resyt)) { $db_passwd = $row["passwd"]; }; if ($db_login != $username || $db_passwd != $pass || $db_login == "" || $db_passwd == ""){ echo "<center> <table> <tr bgcolor=\"#CCCCCC\"> <td><b>Вход в админ панель</b></td> </tr> <tr bgcolor=\"#CCCCCC\"> <td><b>$login_screen</b></td> </tr> </table> </center>"; echo("<script>alert('Неверный логин, пожалуйста проверьте логин и пароль');</script>"); session_destroy(); mysql_close; exit; } }; ?> подключил файл admin.php в admin/index.php так Код (Text): <? include_once("admin_log/admin.php"); // для подключения необходимо поместить файл в корневую папку admin ?> <?php //этой строкой говорим, что пхп код начался. В дальнейшем будем писать проще: "<?", т.к. наш хостинг позволяет делать урощенную запись. $link = mysql_connect('localhost', '*******', '********') or die("Не могу соединиться"); mysql_select_db('******', $link); // а в последней строке мы укажем, что пхп код закончился ?> Код файла админки - 'admin/index.php': <? function show_form(){ // подключаем файл с настройками подключения к БД require '../inc/connect.php'; //делаем запрос к БД, на данный момент на следующие две строчки не стоит обращать внимание, объясню их потом, посокльку на данном этапе они еще не используются. $result = mysql_query("SELECT * FROM pages WHERE id = '".$_GET['id']."';", $link); $row = mysql_fetch_array($result); ?> <!-- далее идет обычный HTML --> <form action="" method="post"> <table cellspacing="1" cellpadding="2" bgcolor="#1F2760"> <tr bgcolor="#B0ADC3"> <td> <p>Название страницы (title)</p> </td> </tr> <tr bgcolor="#ffffff"> <td> <input type="text" name="title" value="<?=htmlspecialchars(stripslashes($row['title']));?>" class="enter" size="79"> </td> </tr> <tr bgcolor="#B0ADC3"> <td> <p>Заголовок страницы (Meta - title)</p> </td> </tr> <tr bgcolor="#ffffff"> <td> <input type="text" name="metatitle" value="<?=htmlspecialchars(stripslashes($row['metatitle']));?>" class="enter" size="79"> </td> </tr> <tr bgcolor="#B0ADC3"> <td> <p>Ключевые слова (Meta - keywords)</p> </td> </tr> <tr bgcolor="#ffffff"> <td> <input type="text" name="metakeywords" class="enter" size="79" value="<?=htmlspecialchars(stripslashes($row['metakeywords']));?>"> </td> </tr> <tr bgcolor="#B0ADC3"> <td> <p>Описание (Meta - description)</p> </td> </tr> <tr bgcolor="#ffffff"> <td> <input type="text" name="metadescription" class="enter" size="79" value="<?=htmlspecialchars(stripslashes($row['metadescription']));?>"> </td> </tr> <tr bgcolor="#B0ADC3"> <td><p>Текст страницы</p></td> </tr> <tr bgcolor="#ffffff"> <td> <textarea name="body" rows="20" cols="59" class="enter"> <?// "<?=" тоже самое, что и "<? echo", т.е. вывод на экран, что выводим объясню позже ;-) ?> <?=stripslashes($row['body']);?> </textarea> </td> </tr> <tr> <td bgcolor="#1F2760" align="right"> <input type="hidden" name="id" value="<?=$_GET['id'];?>"> <input type="submit" value="отправить" name="edit"> </td> </tr> </table> </form> <? } // функция show_form() закончилась function complete(){ // подключаем файл с настройками подключения - это мы уже знаем. require '../inc/connect.php'; // делаем запрос к БД в котором пытаемся вытащить страничку с указаным id. На данный момент мы не сделали еще ни одной страницы, посему запрос вернет пустой ряд. $result = mysql_query("SELECT * FROM pages WHERE id = '".$_POST['id']."';", $link); // перекидываем данные из MySQL в пхпшный ассоциативный массив $row = mysql_fetch_array($result); // проверяем не пуст ли элемент массива id. Если пуст, значит вставляем наши данные в БД if(empty($row['id'])) $query = "INSERT INTO pages (body, title, metatitle, metakeywords, metadescription) VALUES ('".mysql_real_escape_string($_POST['body'])."', '".mysql_real_escape_string($_POST['title'])."', '".mysql_real_escape_string($_POST['metatitle'])."', '".mysql_real_escape_string($_POST['metakeywords'])."', '".mysql_real_escape_string($_POST['metadescription'])."')"; // а вот если не пуст, значит с этим id уже есть запись и в данном случае мы ее просто отредактируем else $query = "UPDATE pages SET body = '".mysql_real_escape_string($_POST['body'])."', title = '".mysql_real_escape_string($_POST['title'])."', metatitle = '".mysql_real_escape_string($_POST['metatitle'])."', metakeywords = '".mysql_real_escape_string($_POST['metakeywords'])."', metadescription = '".mysql_real_escape_string($_POST['metadescription'])."' WHERE id = '".$_POST['id']."';"; // непосредственно записываем наши данные в базу (до этого мы просто описывали, что надо сделать, а теперь делаем) mysql_query($query, $link); // ну и просто выводим крикливую надпись, что скрипт отработал echo '<h3>Данные обновлены</h3>'; } function show_pages() { // добавляем javascript, который позволит перед удалением спросить пользователя, уверен ли он в этом. ?> <script language='JavaScript1.1' type='text/javascript'> <!-- function Delete(N) { if(confirm("Удалить запись?")) { parent.location='?del='+N; } else { return false; } } --> </SCRIPT> <? require '../inc/connect.php'; echo ' <table cellspacing="1" cellpadding="2" bgcolor="#1F2760"> <tr bgcolor="#B0ADC3"> <td> <a href="?id=new">Добавить страницу</a> </td> </tr> </table>'; echo ' <table cellspacing="1" cellpadding="2" bgcolor="#1F2760"> <tr bgcolor="#B0ADC3"> <td colspan="2"> <b>Название страницы</b> </td> </tr>'; $result = mysql_query("SELECT * FROM pages ORDER BY id;", $link); while($row = mysql_fetch_array($result)){ echo ' <tr bgcolor="#ffffff"> <td> <a href="?id='.$row['id'].'">'.stripslashes($row['title']).'</a> </td> <td> <a href="#" OnClick="Delete('.$row['id'].')">удалить</a> </td> </tr>'; // добавили ячейку с ссылкой на удаление и не забыли вставить colspan="2" у заглавной ячейки // думаю вы заметили, что в тексте ссылки мы заменили $row{'id'] на $row['title'] и добавили обработку функцией stripslashes() } echo ' </table>'; } function delete_pages(){ require '../inc/connect.php'; $query = "DELETE FROM pages WHERE id = '".$_GET['del']."';"; mysql_query($query, $link); echo '<h3>Данные удалены</h3>'; } if($_GET['del']) delete_pages(); if($_POST['edit']) complete(); // если была нажата кнопочка "отправить", которая именуется edit - тогда вызываем функию complete() if($_GET['id']) show_form(); // если мы нажали на ссылку в функции show_pages(), то значит мы передали в переменную $_GET['id'] тот самый id, который нас интересует. Поэтому в этом слчае вызываем форму редактирования нашей странички. else show_pages(); // если мы не выбрали определенный id - запускаем нашу функцию выбора id. ?> создал запрос в msql Код (Text): CREATE TABLE IF NOT EXISTS `admin` ( `login` varchar(30) NOT NULL, `passwd` varchar(30) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; доступ к файлу admin_log/admin.php через форму есть, а вот войти никуда не могу, что не так подскажите плз...
Код (PHP): <?php error_reporting(E_ALL); session_start(); $sql = array( 'host'=>'localhost', 'user'=>'имя_пользователя_бд', 'password'=>'пароль_пользователя_бд', 'db'=>'требуемая_база_данных' ); mysql_connect($sql['host'],$sql['user'],$sql['password']); mysql_select_db($sql['db']); $login = $_POST['login']; $password = $_POST['password']; $r_login = mysql_query('SELECT login FROM admin'); $r_password = mysql_query('SELECT passwd FROM admin'); if ($login == $r_login && $password == $r_password) { $_SESSION['isAuth'] = true; header('Location: ссылка на главную страницу админки'); } else { exit('Неправильный логин или пароль!'); } /* Конец файла check.php */ Используйте такой код, не знаю точно будет он работать или нет, но основа должна быть такая. Это код проверки логина и пароля. Советую вам не смешивать логику и представление друг с другом, дабы избежать подобных ошибок в будущем! HTML код формы думаю сами напишите! На главной странице админки проверяйте наличие сессии isAuth Код (Text): if($_SESSION['isAuth'] !== true) { //выгоняем его из админки на страницу авторизации header('Location: ссылка на страницу авторизации'); } Возникнут какие то вопросы, спрашивайте!
Не используйте такой код =( Плохой совет, очень, что есть ваш пароль, что нет его вовсе, кому это будет важно, если такое написать?
Для начала надо абстрагироваться от паролей с админками и узнать некоторые особенности операторов сравнения в пыхе ) Код (PHP): $login = 0; $password = 0; $r_login = 'login'; $r_password = 'password'; if ($login == $r_login && $password == $r_password) echo 'Пароль совпал'; else echo 'Пароль не совпал';
А тебе нравится этот код? 1. Код (PHP): $login = $_POST['login']; $password = $_POST['password']; Зачем плодить лишние переменные? 2. Код (PHP): $r_login = mysql_query('SELECT login FROM admin'); $r_password = mysql_query('SELECT passwd FROM admin'); Даже если бы было бы правильно неужели нельзя объединить в 1 запрос? 3. Код (PHP): if ($login == $r_login && $password == $r_password) { Пароль должен быть захеширован. По коду получается храниться в открытом виде. 4. Пароль с логином надо подставлять в sql запрос что бы найти нужного пользователя. P.S. Код не рабочий и очень плохой.
нет. вы предлагаете хранить пароль подключения к бд в БД,? Добавлено спустя 54 секунды: я вот про это если не в скрипте хранить где хранить данные подключения к БД? Добавлено спустя 27 секунд: на все 100% согласен Добавлено спустя 1 минуту 14 секунд: такая тема уже поднималась, безопасно ли хранить так данные подкключения к БД. вот это меня интересует
Эмм... че то сегодня народ меня не понимает((( Я написал следующее Код (PHP): if ($login == $r_login && $password == $r_password) { Это означает что речь шла о пароле который ввел пользователь. В моем ответе нет упоминания о $sql['password']. Добавлено спустя 1 минуту 50 секунд: Лучшего пока не придумали.
а что если скрипт с параметрами подключения к бд кидать выше от корневой директории и указывать к ней такого типа относительный путь Код (PHP): ../script.php ? будет ли лучшим вариантом?