2016-04-29 68 views
0

谢谢您的阅读。我已经成功地创建了注册并签名的php文件。但是,我需要将SESSION更改为COOKIE。只是将SESSION替换为COOKIE似乎不起作用。如何将SESSION更改为COOKIE并使该功能与SESSION完全相同?php将会话更改为cookie

Register.php:

include 'config.php'; 

if(isset($_SESSION['username'])!="") 
{ 
    header("location: welcome.php"); 
} 

if(isset($_POST['submit'])) 
{ 
    $sql = "INSERT INTO user (username, password) VALUES ('".$_POST["username"]."','".$_POST["password"]."')"; 
    if (mysqli_query($con, $sql)) 
    { 
    $_SESSION['username'] = $_POST["username"]; 
    header("location: login.php"); 
    } 
    else 
    { 
     echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
    } 
} 

?> 

的login.php:

<?php 
include("config.php"); 
session_start(); 

if(isset($_SESSION['username'])!="") 
{ 
    header("location: welcome.php"); 
} 

if (mysqli_connect_errno()) 
{ 
    echo "MySQLi Connection was not established: " . mysqli_connect_error(); 
} 

if(isset($_POST['login'])) 
{ 
    $username = mysqli_real_escape_string($con,$_POST['username']); 
    $password = mysqli_real_escape_string($con,$_POST['password']); 

    $sel_user = "SELECT * FROM user WHERE username='$username' AND password='$password'"; 
    $run_user = mysqli_query($con, $sel_user); 

    $check_user = mysqli_num_rows($run_user); 

    if($check_user>0){ 
     $_SESSION['username']=$username; 
     $_SESSION['loggedIn'] = true; 
     echo "<script>window.open('index.php','_self')</script>"; 
    } 
    else { 
     echo "<script>alert('username or password is not correct, try again!')</script>"; 
    } 

} 

?> 
+2

这已经是可怕的不安全由于SQL注入的问题,明文密码,现在你想使事情变得更糟,使任何人谁发送了'username'和'loggedIn' cookie被自动记录在?你真的不应该这样做... – jeroen

+0

[php更改登录后注销用户登录后可能重复](http://stackoverflow.com/questions/36943107/php-change-sign-in-to-注销后用户登录) –

回答

0

你必须鳗业功能使用cookie在PHP中他们LITTEL种不同的,那么会话。

要设置coockie:

setcookie("Name_Of_Your_Cookie", "Value"); 

您也可以使用第三个参数,如果你想设置一个自动到期时间(如果你wan't全自动一周后expitre您Coockie一个例子)

setcookie("Name_Of_Your_Cookie", "value", time()+60*60*24*7); 

要检查coockie的价值,你使用它像一个会议上,下面的例子:

if(isset($_COOKIE['Name_Of_Your_Cookie'])) echo "Welcome ".$_COOKIE['Name_Of_Your_Cookie']; 
else header('Location: ./login.php'); 

要取消您的Cookie(Deconnexion部分),你有两个建议:

unset($_COOKIE['Name_Of_Your_Cookie']; 

或者设定有效期过去的时间(cookie将被视为obsolet)

setcookie("Name_Of_Your_Cookie", "value", time()-1); 

如果您想了解更多的细节,你对PHP官方站点,这里提供一个很好的文档: http://php.net/manual/fr/features.cookies.php

希望能够帮助您

+0

在我的代码中,我把setcookie(“Name_Of_Your_Cookie”,“Value”)? – Eric

+0

将此行替换为$ _SESSION ['username'] = $ _POST [“username”]; –

0

尝试这

NB:这不是存储喜欢的用户名,密码,PIN等作为cookie的数字证书的良好意识,SESSION is more secure than COOKIE..

Register.php

<?php 
include 'config.php'; 
if(isset($_COOKIE['AuthVal'])) 
     unset($_COOKIE['AuthVal']); 

if(isset($_POST['submit'])) 
{ 
    $sql = "INSERT INTO user (username, password) VALUES ('".$_POST["username"]."','".$_POST["password"]."')"; 
    if (mysqli_query($con, $sql)) 
    { 
    // COOKIE will be there in browser upto 30 days 
    setcookie ('AuthVal', 'username='.$_POST['username'].'&loggedIn=true', time() + (3600 * 24 * 30)); 
    header("location: login.php"); 
    } 
    else 
    { 
     echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
    } 
} 
?> 

login.php

<?php 
include("config.php"); 

if(isset($_COOKIE['AuthVal'])) 
    parse_str($_COOKIE['AuthVal']); 


if(isset($username) && $username != "" && isset($loggedIn) && $loggedIn == "true"){ 
    header("location: welcome.php"); 
    exit; 
} 

if (mysqli_connect_errno()) 
    echo "MySQLi Connection was not established: " . mysqli_connect_error(); 

if(isset($_COOKIE['AuthVal'])) 
     unset($_COOKIE['AuthVal']); 

if(isset($_POST['login'])) 
{ 
    $username = mysqli_real_escape_string($con,$_POST['username']); 
    $password = mysqli_real_escape_string($con,$_POST['password']); 

    $sel_user = "SELECT * FROM user WHERE username='$username' AND password='$password'"; 
    $run_user = mysqli_query($con, $sel_user); 

    $check_user = mysqli_num_rows($run_user); 

    if($check_user>0){ 
     // COOKIE will be there in browser upto 30 days 
     setcookie ('AuthVal', 'username='.$_POST['username'].'&loggedIn=true', time() + (3600 * 24 * 30)); 
     echo "<script>window.open('index.php','_self')</script>"; 
    } 
    else { 
     echo "<script>alert('username or password is not correct, try again!')</script>"; 
    } 

}  
?>