Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的PHP在本地工作,但不在1和1服务器上_Php_Html_Session Variables - Fatal编程技术网

我的PHP在本地工作,但不在1和1服务器上

我的PHP在本地工作,但不在1和1服务器上,php,html,session-variables,Php,Html,Session Variables,我已经在我的机器上本地测试了下面的脚本,一切都按照我想要的方式完美地工作。但是,当我在1和1将文件上载到服务器时,在登录脚本上单击“提交”按钮时,它只会停留在登录屏幕上 我也不确定,但可能问题不在于会话,而在于我的头函数的使用 <?php session_start(); require ("login.php"); include ("header.php"); include ("subnav.php"); if ((isset($_SESSI

我已经在我的机器上本地测试了下面的脚本,一切都按照我想要的方式完美地工作。但是,当我在1和1将文件上载到服务器时,在登录脚本上单击“提交”按钮时,它只会停留在登录屏幕上

我也不确定,但可能问题不在于会话,而在于我的头函数的使用

<?php
    session_start();
    require ("login.php");
    include ("header.php");
    include ("subnav.php");

    if ((isset($_SESSION['user'])) && (isset($_SESSION['admin'])))
        header('Location: admin/index.php' );

    if ((isset($_SESSION['user'])) && (!isset($_SESSION['admin'])))
        header('Location: customer/index.php' );

    if ((isset($_GET['logout'])) == 1) {
        session_destroy();
        header('Location: index.php');
    }

    if (isset($_POST['submit'])) 
        if($_POST['username'] == 'jay') {
            $_SESSION['user'] = 'jay';
            $_SESSION['admin'] = 1;
            header('Location: admin/index.php' );
        }
        else if ($_POST['username'] == 'william'){
            $_SESSION['user'] = 'william';
            header('Location: customer/index.php' );
        }
        else {
            header('Location: http://www.google.com' );
        }
?>

    <h2>System Log-In</h2>

    <form action="" method="post">
        <ul id="login">
            <li>
                Username: <br>
                <input type="text" name="username"></li>
            <li>
                Password: <br>
                <input type="password" name="password">
            </li>
            <li>
                <input type="submit" value="Log-In" name ="submit" id="submit">
            </li>
            <li>
                <br><a href=#>Register Here.</a>
            </li>
            <li>
                If you are having problems with the log-in process, please send us an <a href="mailto:here@here.us">e-mail</a>.
            </li>
        </ul>
    </form>


<?php   
    include ("footer.php");
?>

系统登录
  • 用户名:
  • 密码:

  • 如果您在登录过程中遇到问题,请向我们发送电子邮件。

这可能有帮助,也可能没有帮助,但有几件事你应该做好:

  • 使用
    位置:
    标题时,应始终使用
    die()
    终止脚本。否则脚本的其余部分将继续运行:
    header('Location:…');死亡

  • 同样与
    位置相关:
    标题,您确实应该在路径前面加一个正斜杠。例如
    位置:/index.php

  • 我希望守则是为了实践。仅仅根据POST变量的值给出用户管理员状态并不十分安全


  • 在代码的这一点上放上大括号,以正确完成代码块:

    if( isset( $_POST['submit'] ) )
    

    一般来说,最好总是对所有if语句使用大括号,即使它们是一行。这有助于防止类似的混淆问题。

    可能是会话被禁用
    session\u start
    返回一个布尔值,您必须检查该布尔值以了解会话是否已成功启动。从文档中可以看出:如果会话成功启动,此函数将返回TRUE,否则返回FALSE。设置为1的
    .htaccess
    将阻止一切。由于一个请求,我再次开始在1和1上使用PHP,我很遗憾接受了它。不,这只是为了测试-值将从数据库中派生。不幸的是,这没有帮助。另一件事是在if语句中添加echo语句,以便您可以知道遵循的路径。这将大大有助于故障排除。一旦你知道错误的路径在哪里,你就可以把注意力集中在那些关键变量的值上。我在“header('Location…)行前面放了一个回音,回音消息被打印出来,但是当然,浏览器重定向没有发生。在调用header('Location…')进行重定向之前,服务器无法发送任何输出。所以回音会阻止它重定向。然而,因为在此之前它不工作,所以我假设正在发送其他输出。一个(或多个)login.php、header.php或subnav.php是否发送任何html输出?查看输出内容的一个简单方法是查看源代码并查看在回显之前显示的内容。不确定您的意思,因为在我的本地服务器上重定向没有问题。