2016-12-15 8 views
0
<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title> Cookies </title> 
    </head> 
    <body> 
<h1> Cookies Concept </h1> 
     <form method="get" action="index.php"> 
      Enter Your Name: <input type="text" name="name"> 
      <input type="submit" name="done"> 
     </form> 
    </body> 
</html> 
<?php 
if(!empty($_GET['name']))  
{ 
    if(empty($_COOKIE['name'])) 
    { 
     setcookie('name',$_GET['name']."<br",time()+86400); 
    } 
    else 
    { 
     setcookie('name',$_GET['name'].<br>".$_COOKIE['name'],time()+86400);  
    }  
}  
if(isset($_COOKIE['name'])) 
{ 
     echo $_COOKIE['name']; 
} 
else 
{ 
    echo "Cookie cannot be set"; 
} 
?> 

最後に入力した10の名前を印刷します。どのようにこれを行うには私は助けてください私を知らない?PHPのCookieを使用して履歴を印刷する

+1

できません。他の場所にもそれらを保管しない限りはありません。 Cookieはサーバー上ではなくユーザーのコンピューターに保存されます。最後の10個のクッキーに同時にアクセスする方法はありません。そうした場合(つまり、10人以上の同時ユーザーがいる場合は、すべてのクッキーを取り出して作成し、1つに表示するという本当の面倒です(あなたはすべてのページのすべてのユーザーのためにクッキーを取り出し、最後の10個をフィルターに掛けなければなりません) – junkfoodjunkie

+0

@junkfoodjunkieとまったく同じです。 '$ _COOKIE'関数で設定されたクッキーを簡単に操作できるので、セッションではなく' $ _COOKIE'を本当に使いたい場合は、allow path、domain、HttpOnly-parametersも必ず設定してください。 –

答えて

0

同じユーザーから最後の10を保存する場合は、シリアル化を使用してクッキー内の配列を保存します。しかし、クッキーはその訪問者だけのものであるため、ユーザー間で情報を共有しないことに注意してください。 例:

if(isset($_GET['name'])){ #get the name 
    $name = strip_tags($_GET['name']); 
    $names = []; # just names in case there is no names array 
    if(isset($_COOKIE['cookie'])){ #read cookie  
    $names = unserialize($_COOKIE['names']);  
    } 

    array_unshift($names, $name); #put the name in begging of the list 

    if(count($names) > 10){ #remove last entry if have more then 10 
    array_pop($names);  
    } 
    setcookie('names', serialize($names), time()+3600); 
} 

//to print just read cookie and 
foreach($names as $name){ 
    echo $name; 
} 
関連する問題