ФорумПрограммированиеPHP для идиотов → Помогите разобраться в коде сессии

Помогите разобраться в коде сессии

  • Александр2010

    Сообщения: 116 Репутация: N Группа: Кто попало

    Spritz Сен. 3, 2010, 10:16 д.п.

    Уважаемые жители пыхи. Помогите пожалуйста разобраться в коде сессии. Существует три кода первый это форма отправки данных второй обработчик и третии на странице на которую непосредственно нужно попасть. На денвере все работает просто велликолепно но загрузив на выделенный сервер все не так как хотелось бы.

    первый код форма отправки данных на обработчик
    <?
    if (isset($_GET['lang'])) { $lang = $_GET['lang'];}

    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <title>
    <?
    if (isset($lang))
    {
    echo "Entrance to the casino";
    }
    else
    {
    echo "Вход в казино";
    }
    ?>
    </title>
    <link href="css/staly.css" rel="stylesheet" type="text/css" />
    </head>

    <body>
    <table width="1024" border="0" cellpadding="0" cellspacing="0" align="center">
    <tr>
    <td><img src="img/1.gif" width="13" height="13" /></td>
    <td class="bordertop"></td>
    <td><img src="img/2.gif" width="13" height="13" /></td>
    </tr>
    <tr>
    <td class="borderleft">&nbsp;</td>
    <td>
    <table width="1024" border="0" height="100%" cellpadding="0" cellspacing="0" align="center">
    <tr></tr>
    <? include("blocks/header.php");?>
    <tr>
    <td height="306" valign="top" bgcolor="#FFFFFF"><table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" class="menu">
    <tr>

    <td width="774" align="center" valign="middle" bgcolor="#FFFFFF"><table width="50%" height="70" border="0">
    <tr>
    <td class="
    <?
    if (isset($lang))
    {
    echo "vxodcaz2";
    }
    else
    {
    echo "vxodcaz";
    }
    ?>


    ">&nbsp;</td>
    </tr>
    </table>
    <br />
    <FORM name="form" action="login_proc.php" method="post">
    <TABLE width="50%" border=0 cellPadding=5 cellSpacing=0 class="dengi">
    <TBODY>
    <TR>
    <TD width="54%" height="88" align=center><B class="texttttt">
    <?
    if (isset($lang))
    {
    echo "Login:";
    }
    else
    {
    echo "Логин:";
    }
    ?>


    </B></TD>
    <TD width="46%"><INPUT maxLength="16" size="17" id="log" name="log" style=" border: 1px solid rgb(0,0,0)"></TD></TR>
    <TR>
    <TD height="79" align=center><B class="texttttt">
    <?
    if (isset($lang))
    {
    echo "Password:";
    }
    else
    {
    echo "Пароль:";
    }
    ?>


    </B></TD>
    <TD><INPUT type="password" maxLength="16" size="17" id="psw" name="psw" style=" border: 1px solid rgb(0,0,0)"></TD></TR>
    <TR>
    <TD height="76" colspan="2" align="center"><INPUT type="hidden" value="1" name="send"><INPUT name="submit" type="submit" class="
    <?
    if (isset($lang))
    {
    echo "button4";
    }
    else
    {
    echo "button";
    }
    ?>
    " value=""></TD>
    </TR>
    <TR>
    <TD height="54">&nbsp;</TD>
    <TD></TD></TR></TBODY></TABLE>
    <br />
    </FORM>


    </td>
    </tr>
    </table></td>
    </tr>
    <? include("blocks/footer.php");?>
    </table></td>
    <td class="borderrigt">&nbsp;</td>
    </tr>
    <tr>
    <td><img src="img/4.gif" width="13" height="13" /></td>
    <td class="borderbot"></td>
    <td><img src="img/3.gif" width="13" height="13" /></td>
    </tr>
    </table>
    </body>
    </html>


    Второй код обработчика с редиректом на нужную страницу
    <?
    if (isset($_POST['log'])) { $log = $_POST['log'];}
    if (isset($_POST['psw'])) { $psw = $_POST['psw'] ; }



    session_start();

    foreach ($_POST as $var => $value)
    {
    if ($var=="amp;log"){$log=$value;}
    if ($var=="amp;psw"){$psw=$value;}
    }
    $log = htmlentities($log);
    $psw = htmlentities($psw);
    $psw = md5($psw);//шифруем пароль
    $psw = strrev($psw);// для надежности добавим реверс
    $psw = $psw."b3hg4sp6f";
    if(isset($submit) )
    {
    include ("setup.php");
    $log2=$log;
    $result=mysql_query("select * from users where login='$log2'");
    $row=mysql_fetch_array($result);
    $base_login=$row[1];
    $base_psw=$row[2];
    if($log==$base_login && $psw==$base_psw && $log<>"")
    {
    $HTTP_SESSION_VARS['l']=$base_login;
    Header("Location: lobby/index.php");
    exit;
    }
    else
    {
    Header("Location: ../index.php");
    exit;
    }
    }
    ?>


    И третий код который расположен на странице на которую мы ломимся
    <?
    if (isset($_GET['lang'])) { $lang = $_GET['lang'];}
    Error_Reporting(E_ALL & ~E_NOTICE);
    unset($l);
    session_start();
    session_register($l);
    if(!isset($l)){
    header("Location: login.php");
    exit;
    }
    if ($st == "exit"){
    unset($l);
    session_destroy();
    echo "<script language=\"JavaScript\">location.href=\"../index.php\";</script>";
    }
    include ("../setup.php");


    $row=mysql_fetch_array(mysql_query("select * from users where login='$l'"));
    $conf=mysql_fetch_array(mysql_query("select * from seting"));

    ?>


    На сервере этот код приводит к постоянному редиректу тоесть неоткрывается сессия на денвере все работает велликолепно.
    Но если убрать редирект из третьего кода то тогда страница вобще перестает быть закрытой от всех остальных пользователей.
    Прошу вас сердечно помоч разобраться.
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz Сен. 3, 2010, 11:21 д.п., спустя 1 час 4 минуты 28 секунд

    а на выделенном сервере какая-то ошибка вылетает?
    в самом начале скрипта
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    все умрут, а я изумруд
  • Александр2010

    Сообщения: 116 Репутация: N Группа: Кто попало

    Spritz Сен. 3, 2010, 11:24 д.п., спустя 3 минуты 19 секунд

    Нет обсалютно никакой ошибки невылетает просто выкидывает постоянно на страницу login.php и все. Сессия неоткрывается походу.
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Сен. 3, 2010, 3:09 п.п., спустя 3 часа 45 минут 9 секунд

    как-то всё через зад сделано…

    почему бы просто если логин удался писать

    $_SESSION['id'] = $log;


    а в странице, на которую ломимся


    if (isset($_SESSION['id'])) {
    echo 'Доступ открыт';
    } else {
    die('Доступ закрыт.');//ну или редирект
    }

    Спустя 159 сек.
    4.1.0 Introduced $_SESSION that deprecated $HTTP_SESSION_VARS.
    Спустя 35 сек.
    Александр2010, где ты находишь эти скрипты для пхп4?))))))))))))))
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz Сен. 3, 2010, 3:18 п.п., спустя 9 минут

    мб из-за этого
    unset($l);
    session_start();
    session_register($l);
    if(!isset($l)){
    header("Location: login.php");
    exit;
    }

    ты сначала сбросил $l, потом стартуешь сессию, потом регистрируешь пустую $l, а потом проверяешь, если нет $l (а ты ее сбросил), то перейти на login.php))
    если я все правильно понимаю))
    Высокоуровневое абстрактное говно
  • Александр2010

    Сообщения: 116 Репутация: N Группа: Кто попало

    Spritz Сен. 3, 2010, 3:25 п.п., спустя 6 минут 51 секунду

    Вот в том то и дело что я вобще непонимаю откуда взялась эта переменная а если этот редирект убираешь то ничего не работает. вся проблема в том что такой код не на одной странице а на целых 600 поэтому может какнибуть возможно подогнать код обработчика чтобы он хотябы работал ?? тоесть он и так работает но только на денвере
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz Сен. 3, 2010, 3:30 п.п., спустя 4 минуты 57 секунд

    просто в последнем блоке совсем пиздец)) два раза сбрасываете $l, а потом по ней что-то ищите в бд))
    Высокоуровневое абстрактное говно
  • Александр2010

    Сообщения: 116 Репутация: N Группа: Кто попало

    Spritz Сен. 3, 2010, 3:32 п.п., спустя 2 минуты 3 секунды

    Я понимаю что это полная ж но другого нет пока что ((
    я даже готов заплатить за то чтобы мне помогли подогнать скрипт обработчика так чтобы мне непришлось менять код во всех 600 та страницах (
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz Сен. 3, 2010, 3:39 п.п., спустя 6 минут 39 секунд

    а в чем проблема изменить одинаковые строки в 600 файлах?
    Высокоуровневое абстрактное говно
  • Александр2010

    Сообщения: 116 Репутация: N Группа: Кто попало

    Spritz Сен. 3, 2010, 3:45 п.п., спустя 6 минут 27 секунд

    Так меня интересует теперь другой вопрос вот этот код написан на php 4 ?
    <?
    if (isset($_POST['log'])) { $log = $_POST['log'];}
    if (isset($_POST['psw'])) { $psw = $_POST['psw'] ; }



    session_start();

    foreach ($_POST as $var => $value)
    {
    if ($var=="amp;log"){$log=$value;}
    if ($var=="amp;psw"){$psw=$value;}
    }
    $log = htmlentities($log);
    $psw = htmlentities($psw);
    $psw = md5($psw);//шифруем пароль
    $psw = strrev($psw);// для надежности добавим реверс
    $psw = $psw."b3hg4sp6f";
    if(isset($submit) )
    {
    include ("setup.php");
    $log2=$log;
    $result=mysql_query("select * from users where login='$log2'");
    $row=mysql_fetch_array($result);
    $base_login=$row[1];
    $base_psw=$row[2];
    if($log==$base_login && $psw==$base_psw && $log<>"")
    {
    $HTTP_SESSION_VARS['l']=$base_login;
    Header("Location: lobby/index.php");
    exit;
    }
    else
    {
    Header("Location: ../index.php");
    exit;
    }
    }
    ?>


    Тоесть без потдержки Php4 на сервере он работать не будет ? У меня на сервере стоит потдержка Php 5
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz Сен. 3, 2010, 4:30 п.п., спустя 45 минут 23 секунды

    Так меня интересует теперь другой вопрос вот этот код написан на php 4 ?

    судя по
    $HTTP_SESSION_VARS
    - да
    Тоесть без потдержки Php4 на сервере он работать не будет ?

    фиг его знает, как эта херь работала, и как сейчас работает. я не такой старый, что застал те времена, когда не было $_SESSION)))))))))
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz Сен. 3, 2010, 5:23 п.п., спустя 52 минуты 15 секунд

    Будет работать на РНР5 если включить register_long_arrays = Off , или изменить на $_SESSION

Пожалуйста, авторизуйтесь, чтобы написать комментарий!