我已经进行了登录,设置了一个带有估算的电子邮件地址值的cookie,所以在global.php文件中,它使用以下方法存储用户数据的数组:
$email = $_COOKIE["PeopleHub"]; $getuserdata = mysqli_query($con, "SELECT * FROM Earth WHERE email='$email'"); $userdata = mysqli_fetch_array($getuserdata, MYSQLI_ASSOC);
cookie没有设置,我知道这是因为我做了一个测试文件:
echo $_COOKIE["PeopleHub"];
它只是一个空白页面.
登录代码(设置cookie的地方):
Login
" . $usercount . " members, " . $onlinecount . " of which are online. "; ?>
John Conde.. 40
您必须在发送任何标头之前设置Cookie .
从手册:
setcookie()定义了一个与其他HTTP头一起发送的cookie.与其他标头一样,必须在脚本的任何输出之前发送cookie(这是协议限制).这要求您在任何输出之前调用此函数,包括和标记以及任何空格.
这意味着如果您希望按原样使用此代码,则需要查看输出缓冲.
根据内容global.php
,这可能对您有用.我所做的就是在setcookie()
调用之前删除任何输出.如果global.php
其中包含任何空格或HTML输出,则无效:
Login
" . $usercount . " members, " . $onlinecount . " of which are online. "; ?>
Robert.. 8
只是想指出,我遇到了setcookie无法正常工作的问题.当我进一步调查文件时,它被编码为带有BOM的UTF-8.当我将其重新编码为没有BOM的UTF-8时,setcookie工作正常,因此BOM在我遇到第一个php标签之前就被编写了.我想在我的php.ini文件中启用缓冲可能也会解决这个问题.
有人可能最终发现此信息有用.
只是想指出,我遇到了setcookie无法正常工作的问题.当我进一步调查文件时,它被编码为带有BOM的UTF-8.当我将其重新编码为没有BOM的UTF-8时,setcookie工作正常,因此BOM在我遇到第一个php标签之前就被编写了.我想在我的php.ini文件中启用缓冲可能也会解决这个问题.
有人可能最终发现此信息有用.
您必须在发送任何标头之前设置Cookie .
从手册:
setcookie()定义了一个与其他HTTP头一起发送的cookie.与其他标头一样,必须在脚本的任何输出之前发送cookie(这是协议限制).这要求您在任何输出之前调用此函数,包括和标记以及任何空格.
这意味着如果您希望按原样使用此代码,则需要查看输出缓冲.
<?php ob_start(); echo "Hello\n"; setcookie("cookiename", "cookiedata"); ob_end_flush(); ?>
根据内容global.php
,这可能对您有用.我所做的就是在setcookie()
调用之前删除任何输出.如果global.php
其中包含任何空格或HTML输出,则无效:
<?php include "global.php"; if(isset($_POST["email"])){ $email = $_POST["email"]; $password = sha1($_POST["password"]); $check = mysqli_query($con, "SELECT * FROM Earth WHERE `email`='$email' AND `password`='$password'"); $check = mysqli_num_rows($check); if($check == 1){ setcookie("PeopleHub", $email, 0, '/'); echo "We logged you in!"; } else { echo "We couldn't log you in!"; } } ?> <h2>Login</h2> <?php echo "We currently have <b>" . $usercount . "</b> members, <b>" . $onlinecount . "</b> of which are online. "; ?> <br> <br> <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post"> Email <input name="email" placeholder="Email Address" required="" type="text"><br> Password <input name="password" placeholder="Password" required="" type="password"><br> <input type="reset" value="Start Over"> <input type="submit" value="Login"> </form>