сессия не работает должным образом - PullRequest
0 голосов
/ 25 февраля 2012

У меня проблема с сеансами на локальном хосте, проблема в том, что сеанс не работает на самом деле, когда он перенаправляет на новую страницу сообщения, на которую он отвечает, так как вы должны сначала войти в систему

Код входа

<?php
include '../Class/db.class.php';
include '../Class/validation.class.php';
@session_start();
if(!$_SESSION['user']){
    $link=$_GET['dir'];
    if($link){
echo <<<EOF
<html> <head><title>ورود</title></head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<form method='post' action='index.php?dir=$link'>
  Username: <input type='text' name='user'><br />
 password<input type='password' name='pass'><br />
  <input type='hidden' name='hidd' value=1>
    <input type='submit' value='login'><br />
</form>
EOF;
    }
 else {
    echo <<<EOF
<html> <head><title>login</title></head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<form method='post' action='index.php'>
   username: <input type='text' name='user'><br />
 password: <input type='password' name='pass'><br />
  <input type='hidden' name='hidd' value=1>
    <input type='submit' value='login'><br />
</form>
EOF;
    }
}
$db=new db("localhost", "root", "", "blog");
$con=$db->connect();
$logout=$_GET['logout'];
$user=$_POST['user'];
$pass=$_POST['pass'];
$hidden=$_POST['hidd'];
if($hidden){
if(!$user){
    echo "username field can't left blank";
}
 elseif (!$pass) {
    echo 'password field can't left blank!';

}
else{
    $userres=$db->usersearch($user, $pass);

    if($userres==FALSE){
        echo 'username or password is wrong';
    }
 else {
       $_SESSION['user']=$user;

    }
}
}
if($_SESSION['user']){
  $link=$_GET['dir'];


echo "you logged in ".$_SESSION['user']; 
if($link=="new")
    echo  '<meta http-equiv="REFRESH" content="0;url=../admin/post/new.php">';

}

if($logout)
    session_destroy();
if($_SESSION['user'])
echo '<br /><a href="?logout=1">logout</a>';

?>

новый почтовый индекс

<?php
@session_start();

if($_SESSION['user']=="admin"){
   include '../../Class/db.class.php';
echo <<<EOF
<form method=post action="new.php">
 <br />   subject:
    <br />
    <input type="text" name="title"><br />
   post:<br />

   <textarea cols=50 rows=10 name="post"></textarea><br />
    <input type="submit" value="send">

EOF;
$title=$_POST['title'];
$post=$_POST['post'];
$db=new db("localhost", "root", "", "blog");
$db->connect();
if($title && $post){

   $d=$db->post_insert($title, $title, 1);
    if($d==TRUE)
            echo "post created";
    else
        echo "an error occurred while sending the post";




}

$dd=$db->read(0, 20);
for($i=0;$i<20;$i++){
   echo $dd['content'][$i]."<br />";
}

}
else
{
    echo "you should login first";
    echo $_SESSION['user'];
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
?>

пожалуйста, помогите мне!

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Я нашел ответы других, но не решил мою проблему.

У меня есть страница входа в систему ... она работает хорошо.

Теперь я хочу, чтобы этот пользователь выбрал ваше местоположение в index.html... тогда на следующей странице в объявлениях будут отображаться только изображения с вашего местоположения.

Это нормально, но когда пользователи переходят по другим ссылкам и возвращаются на главную страницу, сеанс разрушен

Я использую:

INDEX.HTML

<form ... ok>
<input name="state">
<input type="submit">
</form>


MAINPAGE.PHP

<?php 
session_start();
$_SESSION['local'] = $_POST['estado'];
$_SESSION['local'];
 ?>
 <!--here is ok-->

 OTHER PAGE
 <?php 
session_start();
$_SESSION['local'];
 ?>
 <!--here is ok too.. session keeps alive but when I back with a menu link session is ended -->
0 голосов
/ 25 февраля 2012

Тот факт, что вы подавляете вывод ошибок из session_start () с символом @, предполагает, что session_start сообщает об ошибках, которые вы игнорируете.

Если он сообщает об ошибках, вы должны посмотреть на ошибку, которую он генерирует, чтобы определить, что не так.

Обычно session_start завершается ошибкой из-за того, что заголовки уже отправлены. Это происходит, если ваш скрипт выводит какой-либо текст до вызова session_start. После отправки заголовков сеанс не может быть запущен, так как это зависит от отправки заголовков.

Исправление для этого - убедиться, что session_start - это первое, что должно произойти в вашем скрипте. Поскольку session_start является первым делом после ваших включений, это означает, что в начале вашего скрипта есть либо пробел, либо пробел или операторы, которые генерируют вывод в включаемых вами скриптах. Вам нужно проверить включенные файлы и исправить любые пробелы (все, что находится за пределами тегов PHP) и убедиться, что они ничего не выводят до тех пор, пока не произойдет session_start.

На заметку, никогда не используйте @ для подавления ошибок. Это кодовый эквивалент выявления потенциально серьезных проблем, которые необходимо решать под ковром.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...