Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2009, 23:23   #21
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Приведите весь код странички.
Arigato вне форума Ответить с цитированием
Старый 13.10.2009, 23:32   #22
Amen
Заблокирован
Форумчанин
 
Регистрация: 22.01.2008
Сообщений: 121
По умолчанию

Ок:

PHP код:
<?php
include "../config.php";

if (isset (
$_POST['login']) && ($_POST['login']==$adm) &&
    isset (
$_POST['pass']) && ($_POST['pass']==$ps))
{
    
$session = array ("login" => $adm"pass" => md5($ps));
    @ 
setcookie ("session"serialize($session), time() + 60 1"/");
    
header ("Location: index.php"); // редирект на эту же страничку
    
exit;

else
 if ( isset (
$_COOKIE["session"]) )

    
// Вход уже выполнен, проверяем корректность данных в куки:
    
$session unserialize ($_COOKIE["session"]);
    if ( isset (
$session["login"]) && $session["login"] == $adm &&
         isset (
$session["pass"]) && $session["pass"] == md5($ps))
    {
        @ 
setcookie ("session"$_COOKIE["session"], time() + 60 1"/");



?>

<html>
<head>
  <title>Aдминистрирование Гостевой книги</title>
  <meta http-equiv="content type" content="text/html; charset=windows-1251">
  <link rel="stylesheet" type="text/css" href="../../css/style.css">
</head>

<body>
<?include "../../shablons/verh.php";?>

<table class="maintab" cellpadding="5" height="173" align="center">
       

<tr class="zagolcolor">  
  <th  class="zagolformat" width="100">Aдминистрирование Гостевой книги</th>
</tr>

<tr class="contentscolor">
 <td  class="contentpadding" width="479" border="1">&nbsp;
<a href=../../guestbook.php>Просмотреть сообщения</a>

 

<?
//Cоединяемся с БД:

//Воспроизводим ГК таким образом, как она выглядит на гл. странице, но отображаем и невидимые сообщения
//Стартовая точка
if (empty($srart)) $start 0;
if (
$start<0$start 0;
//Запрашиваем общее число сообщений
$tot mysql_query ("SELECT count(*) FROM guest;");
//Запрашиваем сами сообщения
$query "SELECT * FROM guest
          ORDER BY puttime DESC
          LIMIT 
$start$pnumber";
$gst mysql_query($query);
if (!
$gst || !$totputerror ("Ошибка при обращении к ГК!");
//При помощи цикла выбираем из БД сообщения
while ($guest mysql_fetch_array($gst))
{
//Если сообщение отмечено как невидимое (hide = 'hide')
//выводим сслыку "отобразить", а если как видимое (hide = 'show')
//выводим ссылку "скрыть"
if ($guest ['hide'] == 'show'$showhide "<a href=hide.php?id_msg=".$guest['id_msg']."&start=$start>Cкрыть сообщение</a>";
                                            
else 
$showhide "<a href=show.php?id_msg=".$guest['id_msg']." &start=$start>
                                            Отобразить сообщения</a>"
;
//Выводим таблицу с сообщениями    
?>
<p>
<table border=1 width=95% bgcolor=Silver>
 <tr bgcolor=Dimgray>
   <td width=25%><b>Автор сообщения</b></td>
   <td><b>Дата отправки</b></td>
   <td><b>Курс</b></td>
   <td><b>e-mail</b></td>
   <td><b>url</b></td>
 </tr>
<?
echo "<tr><td><b><font color=maroon>".$guest['name']."</font></b></td>"
echo 
"<td>".$guest['puttime']."</td>";
echo 
"<td>&nbsp;".$guest['city']."</td>";
echo 
"<td>&nbsp;".$guest['email']."</td>";
echo 
"<td>&nbsp;".$guest['url']."</td></tr>";

echo 
"<tr>
         <td><b>Cообщение:</b></td>
         <td colspan=5>"
.$guest['msg']."</td>
      </tr>"
;
echo 
"<tr>
         <td><b>Администратор:</b></td>
         <td colspan=5>"
.$guest['answer']."</td>
      </tr>"
;
echo 
"</table>";
//Ссылка на редактирование и ответ
echo "<a href=editcommentform.php?id_msg=".$guest['id_msg']."&start=$start>
                                             Редактировать</a>"
;

//ссылка на правку сообщения
echo $showhide;
//Ссылка на удаление сообщений
echo "<a href=delpost.php?id_msg=".$guest['id_msg']."&start=$start>
                                     Удалить</a>"

                                     
}

//Выводим ссылки на предыдущие и следующие сообщения
$total mysql_fetch_array($tot);
$count $total['count(*)'];
if (
$start<0) print "<a href = index.php?start=".($start-$pnumber).">
                    Предыдущие сообщения</a>"
;
if (
$count $start $pnumber) print "<p> <a href = index.php?start=".($start+$pnumber).">
                    Следующие сообщения</a>"
;

                    
else echo
"Неверный код";
        exit;
    }
}

?>


<?
echo 
"
<right><a href=../../guestbook.php>Просмотреть сообщения</a></right>
<form method=\"POST\">
<table width=80%>
  <tr>
    <td width=50% align=right>login: </td>
    <td width=50% align=left><input type=\"text\" name=\"login\" value=\"Логин\" size=\"40\"></td>
  </tr>
  
  <tr>
    <td width=50% align=right>password: </td>
    <td width=50% align=left><input type=\"password\" name=\"pass\" value=\"Пароль\" size=\"40\"></td>
  </tr>
  
  <tr>
    <td></td>
    <td align=left>
       <input type=\"submit\"value=\"Отправить\">
       <input type=\"reset\" value=\"Очистить\">
    </td>                
  </tr>
  </table>
  
  </form>"
;?>
Amen вне форума Ответить с цитированием
Старый 13.10.2009, 23:54   #23
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Скорее всего, проблема в экранирование кавычек.
Вставьте в начало скрипта такой код:
PHP код:
set_magic_quotes_runtime (0);
if ( 
get_magic_quotes_gpc () )
{
    if ( 
is_array ($_GET) ) foreach ( $_GET as $key => $value $_GET[$key] = stripslashes ($value);
    if ( 
is_array ($_COOKIE) ) foreach ( $_COOKIE as $key => $value $_COOKIE[$key] = stripslashes ($value);
    if ( 
is_array ($_POST) )
    {
        foreach ( 
$_POST as $key => $value )
        {
            if ( 
is_array ($value) )
            {
                foreach ( 
$value as $k => $v)
                    
$_POST[$key][$k] = stripslashes ($v);
            } else 
$_POST[$key] = stripslashes ($value);
        }
    }


Последний раз редактировалось Arigato; 14.10.2009 в 00:16.
Arigato вне форума Ответить с цитированием
Старый 14.10.2009, 00:07   #24
Amen
Заблокирован
Форумчанин
 
Регистрация: 22.01.2008
Сообщений: 121
По умолчанию

Arigato, точно, теперь всё работает! Спасибо большое.
А это вы сами сочинили или это какой-то стандартный выход из такой ситуации?
Amen вне форума Ответить с цитированием
Старый 14.10.2009, 00:14   #25
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Ситуация достаточно стандартная. В зависимости от настроек сервера, кавычки либо экранируются, либо нет. В случае экранирования нужно убрать слеши, что бы получить исходный текст.
Arigato вне форума Ответить с цитированием
Старый 16.10.2009, 17:34   #26
Amen
Заблокирован
Форумчанин
 
Регистрация: 22.01.2008
Сообщений: 121
По умолчанию

А вот то же самое с помощью сессий:
PHP код:
session_start();
if (isset (
$_POST['login']) && ($_POST['login']==$adm) &&
    isset (
$_POST['pass']) && ($_POST['pass']==$ps))
{
    
$_SESSION['session'] = array ("login" => $adm"pass" => md5($ps));
    
header ("Location: index.php"); // редирект на эту же страничку
    
exit;

else
 if ( isset (
$_SESSION["session"]) )

    
// Вход уже выполнен, проверяем корректность данных в куки:
    
if ( isset ($_SESSION["session"]["login"]) && $_SESSION["session"]["login"] == $adm &&
         isset (
$_SESSION["session"]["pass"]) && $_SESSION["session"]["pass"] == md5($ps))
    { 
Решил сделать кнопоку "выход".
Вот что получилось:
PHP код:
<?
 
if (isset($_POST['destroy_sess'])) 
 {
  
session_unset();
  
session_destroy();
  
 }
?>  
<td align=right><form method="POST">
<input type=submit name="destroy_sess" value="Выход"></td>
Но выход почему-то осуществляется только после второго нажатия. Подскажите пожалуйста в чём ошибка.
Amen вне форума Ответить с цитированием
Старый 16.10.2009, 17:47   #27
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

Цитата:
Сообщение от Amen Посмотреть сообщение
Подскажите пожалуйста в чём ошибка.
проследите за порядком выполнения кода

скорей всего уничтожение сессии у вас происходит уже после того, как вы выводите часть страницы с блоком авторизации
свободен...
wall66 вне форума Ответить с цитированием
Старый 16.10.2009, 19:29   #28
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

PHP код:
<?
 
if (isset($_POST['destroy_sess'])) 
 {
  
session_unset();
  
session_destroy();

  @ 
header ("Location: адрес_странички.php"); // нужен редирект.

 
}
?>
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
открыть запароленную базу dron-s Microsoft Office Access 2 20.02.2015 20:41
REfresh beemoto Работа с сетью в Delphi 1 20.04.2009 11:02
Refresh при переходе на страницу nikleb JavaScript, Ajax 8 20.12.2007 18:24
Help! Ссылки на страницу с БД DiX Microsoft Office Excel 1 18.07.2007 02:13