Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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 setcookie()未创建cookie_Php_Cookies - Fatal编程技术网

Php setcookie()未创建cookie

Php setcookie()未创建cookie,php,cookies,Php,Cookies,我正试图创建一个“记住我”登录的基础上,我已经找到了一个答案,通过查看stackoverflow。 它似乎不起作用,一旦登录,它只是创建一个PHP会话,而不是创建一个PHP会话和一个Cookie Google Chrome开发者工具: index.php: include('./config.php'); include('./cookie-check.php'); include('./redirect.php'); print_r($_SESSION);

我正试图创建一个“记住我”登录的基础上,我已经找到了一个答案,通过查看stackoverflow。 它似乎不起作用,一旦登录,它只是创建一个
PHP会话
,而不是创建一个
PHP会话
和一个
Cookie

Google Chrome开发者工具:

index.php
    include('./config.php');
    include('./cookie-check.php');
    include('./redirect.php');

print_r($_SESSION);


    if(!isset($_SESSION['cookie']) && empty($_SESSION['user_is_loggedin'])) {
        CheckCookieLogin();
        if(isset($_SESSION['userID'])) {
?>
<p>Logged In</p>
<a href="./action.php?a=logout">Logout</a>
<?php
        } else {
?>
<form method="post" action="./action.php?a=login">
    <input name="formName" type="text" placeholder="username" autocomplete="off" autofocus required />
    <input name="formPass" type="password" placeholder="username" autocomplete="off" required />
    <button type="submit">login</button>
</form>
<?php
        };
    } else {
?>
<p>Logged In</p>
<a href="./action.php?a=logout">Logout</a>
<?php
    };
?>
action.php

    include('./config.php');
    include('./cookie-check.php');
    include('./redirect.php');

print_r($_SESSION);


    if(!isset($_SESSION['cookie']) && empty($_SESSION['user_is_loggedin'])) {
        CheckCookieLogin();
        if(isset($_SESSION['userID'])) {
?>
<p>Logged In</p>
<a href="./action.php?a=logout">Logout</a>
<?php
        } else {
?>
<form method="post" action="./action.php?a=login">
    <input name="formName" type="text" placeholder="username" autocomplete="off" autofocus required />
    <input name="formPass" type="password" placeholder="username" autocomplete="off" required />
    <button type="submit">login</button>
</form>
<?php
        };
    } else {
?>
<p>Logged In</p>
<a href="./action.php?a=logout">Logout</a>
<?php
    };
?>
<?php
    $currentPage = basename($_SERVER['PHP_SELF']);
    session_start();

    $users = new mysqli("localhost", "root", "######", "web_users");
    if ($users->connect_errno) {
        printf("Connect failed: %s\n", $users->connect_error);
        exit();
    };
?>
<?php
    include('./config.php');
    include('./better_crypt.php');

    if(isset($_GET['a'])) {
        $action = $_GET['a'];

        if($action == 'login') {
            $formName = $_POST['formName'];
            $formPass = $_POST['formPass'];
            $ip = $_SERVER['REMOTE_HOST'];

            $checkName = $users->prepare("SELECT userID,userPass FROM users WHERE userName=? LIMIT 1");
            $checkName->bind_param("s", $formName);
            $checkName->execute();
            $checkName->store_result();
            if($checkName->num_rows > 0) {
                $checkName->bind_result($userID,$userPass);
                while($checkName->fetch()) {
                    if(hash_equals($userPass, better_crypt($formPass,$userPass))) {
                        $_SESSION['userID'] = $userID;
                        $_SESSION['user_is_loggedin'] = 1;

                        $cookiehash = md5(sha1($formName . $ip));
                        setcookie("uname",$cookiehash,time()+3600*24*365,'/','fmadev.fma.uk.com');

                        $remember = $users->prepare("UPDATE users SET login_session=? WHERE userID=?");
                        $remember->bind_param("si", $cookiehash,$userID);
                        $remember->execute();
                        $remember->close();
?>
<p>Logged In</p>
<?php
                    } else {
?>
<p>Invalid Password</p>
<?php
                    };
                };
            } else {
?>
<p>Invalid Username</p>
<?php
            };
            $checkName->close();
        } else if($action == "logout") {
            if(isset($_SESSION['userID'])) {
                $userID = $_SESSION['userID'];

                $logout = $users->prepare("UPDATE users SET login_session=null WHERE userID=?");
                $logout->bind_param("i", $userID);
                if($logout->execute()) {
                    $_SESSION['cookie'] = $uname;
                    setcookie("uname",$uname,0,'/','fmadev.fma.uk.com');
                    session_unset();
?>
<p>Logging out</p>
<?php
                } else {
?>
<p>Unable to logout, try again...</p>
<?php
                };
                $logout->close();
            } else {
?>
<p>You must be logged in first</p>
<?php
            };
        } else {
?>
<p>A valid action is required</p>
<?php
        };
    } else {
?>
<p>An action is required</p>
<?php }; ?>
<?php
    function CheckCookieLogin() {
        $uname = $_COOKIE['uname'];
        if (!empty($uname)) {
            $users = new mysqli("localhost", "root", "######", "web_users");
            if ($users->connect_errno) {
                printf("Connect failed: %s\n", $users->connect_error);
                exit();
            };

            $check = $users->prepare("SELECT userID FROM users WHERE login_session=? LIMIT 1");
            $check->bind_param("s", $uname);
            $check->execute();
            $check->store_result();
            if($check->num_rows > 0) {
                    $_SESSION['user_is_loggedin'] = 1;
                    $_SESSION['cookie'] = $uname;
                    setcookie("uname",$uname,time()+3600*24*365,'/','fmadev.fma.uk.com');

                $check->bind_result($userID);
                while($check->fetch()) {
                    $_SESSION['userID'] = $userID;
                };
            };
            $check->close();
        };
    };
?>

这段代码中没有创建cookie有什么原因吗?

我是通过IP而不是域名连接到站点的,所以cookie没有创建。

您看过文档吗?另外:检查设置cookie的内容returns@MeneerVenus,仔细看,似乎我都遵守了。但即使在刷新页面后,cookie仍然不存在。我仍然无法解决此问题。将
$\u服务器['HTTP\u HOST']
设置为cookie的域,而不是硬编码的值,可能会很有用。@meneervins好主意!