Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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 意外的结局_Php - Fatal编程技术网

Php 意外的结局

Php 意外的结局,php,Php,假设发布了一个有效的登录名,那么我的代码在setcookie函数之前就出现了一些问题。这是我的密码 <?php echo 'v1.3.4'; require_once '../ssi/mysql.php'; if(isset($_POST['action'])){ $username = $_POST['username']; $password = md5($_POST['password']); $check = mysqli_query($con, "SELECT * FROM

假设发布了一个有效的登录名,那么我的代码在setcookie函数之前就出现了一些问题。这是我的密码

<?php

echo 'v1.3.4';

require_once '../ssi/mysql.php';

if(isset($_POST['action'])){
$username = $_POST['username'];
$password = md5($_POST['password']);
$check = mysqli_query($con, "SELECT * FROM admins WHERE username = '$username' AND password = '$password' LIMIT 1");
$checknm = mysqli_num_rows($check);

if($checknm == 1){
    while($info = mysqli_fetch_array($check)){
        $keypair = $info['keypair'];
        setcookie("f2admin", $keypair, time()+3600);
        header('Location: index.php');
        exit;
    }
}else{
    $err = "Invalid Username or Password. Please try again.";
}

}

?>

在使用标题之前,您需要删除/注释任何内容


在对标头执行任何操作之前,您的代码不能输出任何内容。输出必须在标题信息之后。

好的,我注意到了一些事情

标题设置在回音“是”上方;这意味着页面将在输出内容回显之前重定向

出口;设置在回音“否”上方;这意味着页面将在到达echo“No”之前退出

标头上方存在回声集,导致标头重定向无效

另一方面,如果您试图停止while循环,那么函数应该是break;而不是退出

更新

我已经让它在我当地的环境中正常工作了。我发现了一些东西

1表单中没有设置操作,不确定是否需要

2,$ Err永远不会在空白页上回响,但是代码本身确实起作用。 3 mysqli_fetch_数组循环是冗余的,因为您强制mysql将结果限制为1

$info = mysqli_fetch_array($check);
$keypair = $info['keypair'];
setcookie("f2admin", $keypair, time()+3600);
header('Location: index.php');
exit;

我删除了所有的回音,但cookie仍然没有设置,页面也没有转发到index.php。您在哪里放置了此代码?您应该在任何输出到浏览器之前使用此代码。请稍等,我会将整个PHP代码添加到问题中。那么您是否在while循环中得到$info的结果?是,我可以回显$keypair变量并得到准确的结果。我添加了Yes和No的回显,以查看我的服务器是否跳过了行,并找出它停止的位置。因此,只需一个提示,但您修改后的更新代码缺少标头重定向,因此它为什么不被转发。你怎么知道cookie没有被设置?对不起,我从Dreamweaver复制时不小心删除了标题。我的浏览器中有一个cookie编辑器。不用担心。在索引页面上,当您放置var_dump$_COOKIE时会得到什么?array1{[\uu atuvc]=>string4 1 | 49}
$info = mysqli_fetch_array($check);
$keypair = $info['keypair'];
setcookie("f2admin", $keypair, time()+3600);
header('Location: index.php');
exit;