Çerezler PHP Script düzgün ayarlayın Olmama edilir

4 Cevap php

Php çok yeni im ve çerez kullanmayı deneyin ama benim sitede woking değil, herkes benim kodda neyin yanlış gittiğini, bana lütfen rehberlik eder:

<?php
session_start();
?>
<script>
function Redirect(url)
{
 location.href = url;
}

</script>
<?php 

define('_VALID_ACCESS', true);
include_once "includes/connect.php";
include_once "includes/login.php";


if(empty($_POST['loginname']) || empty($_POST['password']))
{
    $msg = "User or password is empty";
}
else
{
    if(login($_POST['loginname'], $_POST['password']) == true)
    {
    	$usern = $_POST['loginname'];
    	session_register('loginname');
    	$loginname = $usern;		
    	sleep(1);
    		if(activestatus($_POST['loginname'], $_POST['password']) == true)
    		{
    		$usern = $_POST['loginname'];
    		session_register('loginname');
    		$loginname = $usern;		
    		sleep(1);

    		$hour = time() + 3600;
    		setcookie("ID_my_site", $_POST['loginname'], $hour);
    		setcookie("Key_my_site", $_POST['password'], $hour); 
    		$test = $_COOKIE["ID_my_site"];
    		$msg = "<script> Redirect ('home.html?testname=".$test."')</script>"; 
    		 //header("Location: home.html"); 
    		}
    		else
    		{
    		$msg = "<script> Redirect ('valid.php?testname=".$usern."')</script>"; 
    		}

    }
    else
    {
    	$msg = "<font color=red>User or Password is wrong</font>";
    }
}
echo '<div id="divTarget">' . $msg . '</div>'; 
?>
  <link rel="stylesheet" href="css/blueprint/screen.css" type="text/css" media="screen, projection">
  <link rel="stylesheet" href="css/blueprint/print.css" type="text/css" media="print">
  <link rel="stylesheet" href="css/blueprint/ie.css" type="text/css" media="screen, projection">  
 <body>
 <div class="container" id="login_container">
<form id="login" action="action.php" method="post" name="loginform" >
    <fieldset id="login_screen"  style="width:350px">
    	<label id="login_label" for="login">User Login </label> 
        <br><br>
    	<label for="login">Email Address</label>
    	<input type="text" name="loginname" id="loginname" value="email@coolmates.com">    
    	<p id="space"><label for="password">Password</label>
    	<input type="password" id="password" name="password"  value="********" ></p>
    	<input type="checkbox">Keep me signed in until i signout
    	<p id="test"><input type="submit" value="Submit"></p>
    	<a href="forgetpassword.html">Forgot
    	your password</a>&nbsp;&nbsp;|<span id="free">Not a member?</span><a href="regForm.html">Sign up</a><blink><span id="free">Free</span></blink> 
    	</p>
    </fieldset>
</form> </div>
</body>

4 Cevap

Display_errors açın ve E_ALL için error_reporting ayarlamak ve 'zaten gönderildi başlıklarını' ile ilgili bir hata mesajı görmelisiniz - HERHANGİ HTML göndermeden önce setcookie () aramak zorunda. Php.net / setcookie Gönderen:

setcookie() defines a cookie to be sent along with the rest of the HTTP headers. Like other headers, cookies must be sent before any output from your script (this is a protocol restriction). This requires that you place calls to this function prior to any output, including and tags as well as any whitespace.

Eğer bu bit yayınlanmıştır kod bloğu:

<script>
function Redirect(url)
{
 location.href = url;
}

</script>

Doğrudan tarayıcıya çıktı olmanın hiç çerezleri ayarlamaya çalışırsanız çok önce.

Sizin iki olasılık çok sonunda veya daha sonra işlem kodu tek bir komut ilk çalıştırılır ve orada $ _SESSION set ve çerez değerler ve bir yönteme geçmek için çıktı her şey bir saniye içerecek şekilde çıktı tamponlama kullanmak olacaktır kod tarayıcıya çıkış olması için içerdiği ilk kuyruk sonunda script.

(Sitenizin kök belirterek) bu deneyin:

setcookie("ID_my_site", $_POST['loginname'], $hour,'/');

veya (sizin loginname için tırnak ekleyerek) bu deneyin:

setcookie("ID_my_site", "$_POST['loginname']", $hour,'/');

1. Eğer session_register gerekmez, sadece yapabilirsiniz.

Session_register 4.1.0 beri tercih edilen yöntem ve PHP 5.3 olarak önerilmemektedir yana

$_SESSION["loginname"] = $_POST["loginname"]

2 oturumları kullanmak için gidiyoruz eğer bu işe yaramazsa bu yana, akışın, daha iyi olabilir.

$_SESSION["foo"] = 1;
header("Location: stuff.php");

Sonra stuff.php oturum verilerini görüntüleyemezsiniz. Sen ana sayfaya kullanıcı göndermek ve orada kimlik doğrulaması yapmak ve olabilecek ya da geçerse o zaman sadece ana sayfanın yüklenmesi ile devam ve o değilse, o zaman giriş için kullanıcı geri göndermek Bu gibi sayfa.

if($_SESSION["authenticated"] == 0)
{
    header("Location: login.php");
    die();
}

Ayrıca bir parola saklamak olmamalı çerez veriler - bu büyük bir güvenlik No-Hayır olduğunu!

Rasgele - - onlar yerine (eğer hala MD5 olmalı) o giriş ve kullanımı ne zaman değişir tanımlayıcı yapmak istiyorsanız, böyle bir şey benzersiz bir set