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