Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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 如何为注册和登录脚本设置cookie_Php_Cookies - Fatal编程技术网

Php 如何为注册和登录脚本设置cookie

Php 如何为注册和登录脚本设置cookie,php,cookies,Php,Cookies,我在设置cookies时遇到问题。我有一个注册和登录表单,在用户被重定向到另一个页面后,该页面包含header.php,用于向登录用户和访客(未登录)显示不同的数据。但在注册和登录之后,标题菜单仍然是注册和登录 register.php <?php $con = mysqli_connect("localhost","root","","findfriends") or die ("Connection not established"); ?> <?php

我在设置cookies时遇到问题。我有一个注册和登录表单,在用户被重定向到另一个页面后,该页面包含
header.php
,用于向登录用户和访客(未登录)显示不同的数据。但在注册和登录之后,标题菜单仍然是注册和登录

register.php

 <?php
  $con = mysqli_connect("localhost","root","","findfriends") or die ("Connection not established");
  ?>
  <?php
  if(isset($_POST['reg'])){
   $fn=strip_tags(@$_POST['fname']);
   $ln=strip_tags(@$_POST['lname']);
   $un=strip_tags(@$_POST['username']);
   $em=strip_tags(@$_POST['email']);
   $pswd=strip_tags(@$_POST['password']);
   $d= date("Y-m-d");
   $reg_query = "INSERT INTO users (userid,username,first_name,last_name,email,password,sign_up_date,activated,bio,profile_photo,closed) VALUES ('','{$un}','{$fn}','{$ln}','{$em}','{$pswd}','{$d}','0','What you do?','','no')";
   $reg_run = mysqli_query($con,$reg_query); 
   setcookie('user',$un,time()+3600*24*365);  
    echo "The cookie has been set."; 
    header("Location:main.php");

   if(isset($_POST['login'])){ 
   $log_que = "SELECT * FROM users WHERE username = '$un' AND password = '$pswd' ";
   $log_run = mysqli_query($con, $log_que);
   $row = mysqli_fetch_array($log_run);
   $un_db = $log_row['username'];
   $pswd_db = $log_row['password'];
   if($un == $un_db && $pswd == $pswd_db)
    {
    echo "LOGGED IN!";  
    setcookie('user',$un,time()+3600*24*365); 
    header("Location: main.php");
   }
   }
   ?>
        <!DOCTYPE html>
        <html>
        <head>
        <title>findfriends</title>
        <script src="js/main.js" type="text/javascript"></script>
        <link rel="stylesheet" type="text/css" href="./css/style.css"/>        
        </head>
        <body>
        <div class="headerMenu">
        <div id="wrapper">
        <div class="logo">
        <img src="./img/logo.gif"/>
        </div>
        <div class="search_box">
        <form action="searchresults.php" method="post" name="search">
        <table>
        <tr>
        <td>  
        <input type="text" name="search" placeholder="Search ..."/>
        </td>
        <td>
        <input type="image" src="./img/search-icon.png" alt="submit" />
        </td>
        </tr>
        </table>
        </form>
        </div>                
       <?php
       if(isset($_COOKIE['user'])){
       echo '
      <ul class="dd">
      <li><a href="main.php" >Home</a>
      </li>
      <li><a href="' . $user . '">Profile</a>
      </li>
      <li><a href="my_messages.php">Inbox' . $unread_numrows . '</a>
      </li> 
      <li><a href="#">Management</a>
      <ul><li><a href="account_settings.php">Settings</a>
      </li>
      <li><a href="logout.php">Logout</a>
      </li>
      </ul>
      </li>
      </ul>';

     }
     else
    {
    echo '
    <ul class="dd">
    <li><a href="register.php" >Sign Up</a>
    </li>
    <li><a href="register.php">Login</a>
    </li>
    </ul>';
    }
    ?>
    </div>
    </div>
    </body>
    </html>

如果在头函数之前进行输出,则需要打开输出缓冲区 在第一行添加它

<?php ob_start(); ?>

最后

<?php ob_flush(); ?>

必须在login.php/login.html文件中添加if-else语句 页面的每个文件

if($user===not_logged_in){
 header("Location: login.php");
} else{
//do somthing else
}

您正在使用两个不同的cookie名称进行注册和登录,这是有意的吗?不完全确定您的实际问题是什么。。但是你的
header()
重定向将不起作用,如果你之前有
echo
'd东西,你会得到什么错误???。你的第二个
setcookie()
也不起作用-出于同样的原因,对不起,cookie的不同名称只是为了测试其他东西,现在问题被编辑为提醒;)