PHP dosya yükleme çerezleri Set

5 Cevap

Ben upload.php bir php yükleme işleyicisi var ve orada, ben şu var

<? setcookie("test",100,time()+3600); ?>

Ben ayarlanır çerezleri kontrol ederken ama, ben hiç bir "test" çerez görmüyorum.

Bana dosya yükleme bir cookie set lütfen yardım edebilir? neden bu yükleme komut dosyası tarayıcı tarafından erişilen herhangi normal bir komut dosyası herhangi farklıdır?

İşte var kodu

<?php           
 if (!empty($_FILES)) {            
    if(move_uploaded_file($tempFile,$targetFile))
        {               
                setcookie("targetPath",$targetPath,time() + 3600,'/');
                print $_COOKIE['targetPath']; // prints fine here
                echo 1;
        }
        else
                echo -1;} 
else
{
//print_r($_COOKIE);
print "start cookie >> ";
print $_COOKIE['targetPath']; // does not print when I call upload.php standalone
print " << end cookie";

}
?>

5 Cevap

Bu veya sorununuzu çözmek değil, ama ben bunu işaret gerektiğini düşündüm:

  1. setcookie çıktı tamponlama kullandığınız sürece, önceden herhangi bir çıkış denilen gerekir.
  2. Move_uploaded_file için ilk argüman gibi bir şey olmalı $_FILES["pictures"]["tmp_name"][0]
  3. Setcookie seti Çerezler sonraki sayfa yük kadar görünmüyor. Ve evet, bu documented PHP kılavuzunda olduğu:

    Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE or $HTTP_COOKIE_VARS arrays.

    Bu, bu kodu anlamına gelir:

    setcookie("targetPath",$targetPath,time() + 3600,'/'); print $_COOKIE['targetPath']; // prints fine here

    çerez old değerini yazdırmak gerekir.

  4. eğer başarısız setcookie false döndürür. Bunu dönüş değerini kontrol etmek isteyebilirsiniz.

Eğer çerezleri upload.php, yani ayarlanmış olup olmadığını görmek için kontrol edilir. aynı script bunları ayarlamak? Eğer öyleyse, ben bunları ayarlamak için beklemek olmaz. Onlar upload.php gelen çerez aldıktan sonra çerez sonraki HTTP isteği üzerine müşteri tarafından gönderilecektir.

setcookie has "path" argument. If it is not specified: "The default value is the current directory that the cookie is being set in." So most likely you're trying to set cookie for something like www.youdomain.com/actions/upload.php and in that case cookie will be set for /actions/ path.

Ayrıca komut o çağrı setcookie yapılır before herhangi bir çıkış kontrol

Çalışmıyor. Ben tüm yukarıdaki önerileri çalıştı. İşte var kodu

<?php   	
 if (!empty($_FILES)) {            
    if(move_uploaded_file($tempFile,$targetFile))
	{		
		setcookie("targetPath",$targetPath,time() + 3600,'/');
		print $_COOKIE['targetPath']; // prints fine here
		echo 1;
	}
	else
		echo -1;} 
else
{
//print_r($_COOKIE);
print "start cookie >> ";
print $_COOKIE['targetPath']; // does not print when I call upload.php standalone
print " << end cookie";

}
?>

Alan belirterek deneyin?

<?php    
setcookie( 'test', 100, time()+3600, '/', '.sitename.com' );

Eğer $_COOKIE['test'] ile getiriliyor musunuz?

PS - Sen kısa etiketleri kullanarak olmamalıdır. <? <?php ile değiştirin.