setcookie () PHP не работает с переменными - PullRequest
0 голосов
/ 27 апреля 2019

Мне нужно установить куки в назначении.Когда я устанавливаю их, используя строку, т.е. setcookie('Name', 'John', time() + 86400), это работает, но при использовании переменной PHP, например, setcookie('Name', $name, time() + 86400), cookie не устанавливается.

Я не уверен, что делаю неправильно.Я повторил переменную $ name на моей странице, и она появилась, поэтому я знаю, что она установлена.Когда я отображаю cookie с использованием $_COOKIE['Name'], он работает, когда получает строку, но не работает, когда он PHP variable.

order01.php

<form action="order02.php" class="formLayout">
 <div class="formGroup">
  <label>First name:</label>
  <input type="text" name="fname" class="textbox" autofocus 
  required placeholder="First name" title="first name" 
  maxlength="20" pattern="[A-Za-z'-]{2,20}">
 </div>
 <div class="formGroup">
  <label> Car model:</label>
  <div class="formElements">
   <input type="radio" name="model" required value="Mustang">Ford Mustang<br>
   <input type="radio" name="model" required value="Subaru">Subaru WRX 
STI<br>
   <input type="radio" name="model" required value="Corvette">Corvette<br>
  </div>
 </div>


<?php
 $name = $_GET['fname'];
 $model = $_GET['model'];

 //write cookies for name and model for 1 day
 setcookie('Name', $name, time() + 86400);
 setcookie('Model', $model, time() + 86400);
?>

order02.php

if(isset($_COOKIE['Name'])){
 echo "Cookie ".$_COOKIE['Name']." is set";
}
else{
 echo "<div class='pageContainer'>";
 echo "<h2 class='containerText, centerText'>Failed to validate inputs";
 echo "<br><br>";
 echo "<a href='order01.php'><button>Go Back</button></a>";
 echo "</div>";
 exit();
}

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Не должно выводиться до строки cookie, например (echo, print_r () и теги HTML)

Вы можете написать код куки перед любым выводом

 <?php
  $name = $_GET['fname'];
  $model = $_GET['model'];

 //write cookies for name and model for 1 day
  setcookie('Name', $name, time() + 86400);
  setcookie('Model', $model, time() + 86400);
       ?>

<form action="order01.php" class="formLayout">
 <div class="formGroup">
  <label>First name:</label>
  <input type="text" name="fname" class="textbox" autofocus required placeholder="First name" title="first name" maxlength="20" pattern="[A-Za-z'-]{2,20}">
</div>
<div class="formGroup">
   <label> Car model:</label>
   <div class="formElements">
    <input type="radio" name="model" required value="Mustang">Ford Mustang<br>
    <input type="radio" name="model" required value="Subaru">Subaru WRX STI<br>
    <input type="radio" name="model" required value="Corvette">Corvette<br>
   </div>

   <input type="submit" value="submit">
  </div>
 </form>
0 голосов
/ 27 апреля 2019

В вашем коде есть несколько проблем, во-первых, нет закрывающего тега </form>, а во-вторых, вы должны отправить свою форму на order01.php, где вы сохраняете cookie, так что попробуйте, и он будет работать

Order01.php

<form action="order01.php" class="formLayout">
<div class="formGroup">
 <label>First name:</label>
 <input type="text" name="fname" class="textbox" autofocus 
 required placeholder="First name" title="first name" 
 maxlength="20" pattern="[A-Za-z'-]{2,20}">
</div>
<div class="formGroup">
 <label> Car model:</label>
 <div class="formElements">
  <input type="radio" name="model" required value="Mustang">Ford Mustang<br>
 <input type="radio" name="model" required value="Subaru">Subaru WRX STI<br>
 <input type="radio" name="model" required value="Corvette">Corvette<br>
</div>

 <input type="submit" value="submit">
</div>
</form>

Order02.php

  <?php

 $name = $_GET['fname'];
 $model = $_GET['model'];

 //write cookies for name and model for 1 day
 setcookie('Name', $name, time() + 86400);
 setcookie('Model', $model, time() + 86400);

if(isset($_COOKIE['Name'])){
  echo "Cookie ".$_COOKIE['Name']." is set";
 }
 else{
   echo "<div class='pageContainer'>";
   echo "<h2 class='containerText, centerText'>Failed to validate inputs";
   echo "<br><br>";
   echo "<a href='order01.php'><button>Go Back</button></a>";
   echo "</div>";
   exit();
  }

?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...