如何处理不一致的 PHP 警告(特别是在本地托管与在线托管的情况下)?

问题描述 投票:0回答:1

我知道我的代码很糟糕,但我不认为这真的是错的吗?

设法找出如何根据登录/注册表单给出的级别将用户重定向到不同的页面,并且它在我的计算机本地运行良好。没有检测到任何错误或错误,并且通过手动测试似乎没问题。

然后,我将整个登录/注册程序上传到一个免费托管网站(000webhost)上,代码基本相同,但验证过程的结果却截然不同:post-login screen, locally hostedpost-login screen, on 000webhost

具体来说,错误是:

Warning: Undefined array key "level" in /storage/ssd1/382/21909382/public_html/validation.php on line 15

Warning: Undefined array key "admin" in /storage/ssd1/382/21909382/public_html/validation.php on line 27

Warning: Cannot modify header information - headers already sent by (output started at /storage/ssd1/382/21909382/public_html/validation.php:15) in /storage/ssd1/382/21909382/public_html/validation.php on line 28

有问题的行是:

Line 15: $level = $_POST['level'];

Line 27: $_SESSION["admin"];

Line 28: header('location:Admin Page.php');

这是出现错误的完整文件:

<?php

session_start();

$con = mysqli_connect('localhost','id21909382_biyo','!Biyo123');

mysqli_select_db($con, 'id21909382_access_levels');

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

$name = $_POST['user'];
$pass = $_POST['password'];
$level = $_POST['level'];

echo $value ?? '';

$select = " select * from usertable where name = '$name' && password = '$pass'";

$result = mysqli_query($con, $select);

if (mysqli_num_rows($result) > 0){ 
    $row = mysqli_fetch_array($result);

    if($row['level'] == 'admin'){
        $_SESSION["admin"];
        header('location:Admin Page.php');

    }elseif($row['level'] == 'user'){
        $_SESSION["user"];
        header('location:User Page.php');
        
    }

}else{
    header('location:index.php');
}

}

?>

已经很奇怪的是,尽管两者相同,但结果却截然不同(它们之间唯一不同的是 $con = mysqli_connect('localhost','id21909382_biyo','!Biyo123');),因为 000webhost 有不同的phpmyadmin 的凭据。更糟糕的是,所有错误行都有类似的无错误行:第 27 行的 $_SESSION["admin"];类似于 $_SESSION["user"];例如,就在几行之后。大部分代码也是从我的程序中的注册文件复制粘贴的,但没有问题。

我到底做错了什么导致了这种差异?

localhost web-hosting
1个回答
0
投票

问题最终自行解决。随机尝试再次登录,它自发地起作用了。

© www.soinside.com 2019 - 2024. All rights reserved.