PHP会话-不保存

阿科斯·福多(ÁkosFodor)

我正在为我的网站创建管理页面,但发现了问题。我的代码与Wamp完美兼容(并且仍在Chrome中运行,但不适用于其他人或其他浏览器)。因此,问题在于,我的网站在标头重定向后没有保存会话变量。(我不知道的另一件事是,如果我在页面标题之后放下模具或退出页面,页面将变成空白,并且必须手动刷新。它仍然仅在网络服务器上。)

<?php
session_start();
$log = $_GET['logout'];
$error = false;
//logout
if($log==true){
    unset($_SESSION['user']);
    header('Location: '.$_SERVER['PHP_SELF']);
    //die;
}
//login
if (isset($_POST['submit']) && !isset($_SESSION['user']) ){
    $file="login.xml";
    $xml=simplexml_load_file($file) or die ("Unable to load XMl file!");
    $nope=true;
    $givenuser = $_POST['username'];
    $givenpass = md5($_POST['password']);
    foreach($xml->user as $user){
        $username = $user->username;
        $password = $user->password;
        if ($givenuser == $username && $givenpass == $password){
            $_SESSION['user'] = $givenuser;
            $nope =false;
            header('Location: '. $_SERVER['PHP_SELF']);
            //die();
        }
    }
    if($nope) $error = true;
}
//succesful login
if (isset($_SESSION['user'])){
    ?>
    <html>
    <header><link rel="stylesheet" href="style.css" type="text/css" /></header>
    <body>
    <h1>
    <?php echo "Welcome ".$_SESSION['user']; ?>
    </h1>
    <div> 
        <a href="?">New page</a> 
        <a href="?logout=true">Logout</a>
    </div>
    <div id="menus">
        Pages:</br>
        <?php
            $file="../pages.xml";
            $xml=simplexml_load_file($file) or die ("Unable to load XMl file!");
            $index = 0;
            foreach($xml->xpath('//oldalneve') as $pagename){
                echo '<a href="?id='.$index.'">'.$pagename.'</a></br>';
                $index=$index+1;
            }
        ?>
    </div>
    <?php
        if(!is_numeric($_GET['id'])){
            $id=-1;
        }else{
            $id=(int)$_GET['id'];
        }
        if($id!=-1){
            $id=(int)$_GET['id'];
            if(isset($_POST['name']) && isset($_POST['body'])){
                if($_REQUEST['name'] !="" && $_REQUEST['body']!=""){
                    $file="../pages.xml";
                    $xml= simplexml_load_file($file) or die ("Unable to load XML file!");
                    $name = $_POST['name'];
                    $body = $_POST['body'];
                    $xml->page[$id]->oldalneve = $name;
                    $xml->page[$id]->body = $body;
                    $xml->asXML('../pages.xml');
                    header('Location: '.$_SERVER['PHP_SELF'].'?id='.$id);
                    //die;
                    }
            }
            $file="../pages.xml";
            $xml= simplexml_load_file($file);
            $nam=$xml->page[$id]->oldalneve;
            $val=$xml->page[$id]->body;
            ?>
            <div style="float:left;">
                <form name="input" method="post" action="" >
                    <label>Name</label></br>
                    <input type="text" name="name" style="width:250px" value="<?php echo $nam;?>"></br>
                    <label>Body</label></br>
                    <textarea cols="28" rows="10" name="body"><?php echo $val;?></textarea></br>
                    <input type="submit" name="submit" value="Küldés">
                </form>
            </div>
            </body>
            </html>
            <?php
        }else{ 
    ?>
            <div style="float:left;">
                <form name="input" method="post" action="" >
                    <fieldset><legend>Add page</legend>
                        <label>Name</label></br>
                        <input type="text" name="name" style="width:250px"></br>
                        <label>Body</label></br>
                        <textarea cols="28" rows="10"v name="body"></textarea></br>
                        <input type="submit" name="submit" value="Küldés">
                    </fieldset> 
                </form>
            </div>
            </body>
            </html>
            <?php
            if(isset($_POST['submit'])){
                if($_REQUEST['name'] !="" && $_REQUEST['body']!=""){
                    $file="../pages.xml";
                    $xml= simplexml_load_file($file) or die ("Unable to load XML file!");
                    $page=$xml->addChild('page');
                    $name = $_POST['name'];
                    $body = $_POST['body'];
                    $page->addChild('oldalneve', $name);
                    $page->addChild('body', $body);

                    $xml->asXML('../pages.xml');
                    header('Location: '.$_SERVER['PHP_SELF']);
                    //die;
                }
            }
        }
}else
{
    showLogin($error);
}
function showLogin($error){?>

    <form action="" method='post'>
        <label for="username">username</label>
        <input type="text" name="username" id="username"></br>
        <label for="password">password</label>
        <input type="password" name="password" id="password"></br>
        <?php
            if($error){
            echo "Invalid username or password".'</br>';
            }
        ?>
        <input type="submit" name="submit" value="submit">
    </form> 

<?php }

?>

用户可以登录并查看界面,但是使用链接之一会将其重定向到登录屏幕(未保存会话用户)。

这是phpinfo():

session.auto_start  Off Off
session.bug_compat_42   On  On
session.bug_compat_warn On  On
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    no value    no value
session.entropy_length  0   0
session.gc_divisor  100 100
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.hash_bits_per_character 4   4
session.hash_function   0   0
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /tmp    /tmp
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    Off Off
session.use_trans_sid   0   0
大能力

我认为查菲克在某种程度上是对的。

if($_GET['logout'] == true) 

这是一个不好的方法(很多事情会使该陈述成为事实)。但是他不正确,因为===那样才能解决。即使您设置了?logout=true$_GET['logout']也将包含字符串 true,而不是布尔值,因此您===将结束false"true"!== true)。我会用

if(isset($_GET['logout']))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP会话不保存?

来自分类Dev

Passport 不保存会话

来自分类Dev

快速会话不保存数据

来自分类Dev

使用 fetch API 时不保存 PHP 会话变量

来自分类Dev

PHP变量不保存数据

来自分类Dev

重定向后Express会话不保存

来自分类Dev

从Access VBA退出excel会话而不保存

来自分类Dev

ExpressJS 客户端会话不保存会话

来自分类Dev

PHP的读写文件不保存领先的空格

来自分类Dev

express-session不保存用户的会话数据

来自分类Dev

USB-live在会话之间不保存文件

来自分类Dev

Node.js:为什么不保存会话?

来自分类Dev

PHP会话未保存

来自分类Dev

PHP会话未保存

来自分类Dev

PHP 会话不会保存

来自分类Dev

保存会话数据无效。PHP会话

来自分类Dev

用PHP生成XML文件,但不保存

来自分类Dev

php / webstorm toogle自动测试被触发而不保存文件

来自分类Dev

PHP在不保存的情况下获取文件内容

来自分类Dev

为什么我的php类不保存它的属性?

来自分类Dev

使用 PHP 和 Ajax 不保存表单详细信息

来自分类Dev

PHP会话变量未保存

来自分类Dev

PHP会话变量在表单提交后不保留

来自分类Dev

curl调用后未保存PHP会话

来自分类Dev

PHP会话-Windows的默认保存位置

来自分类Dev

保存每个用户的php会话ID

来自分类Dev

检查登录状态并保存登录会话(PHP)

来自分类Dev

无法获得会话以保存号码PHP

来自分类Dev

PHP-何时保存会话变量?