Сохранение значений формы с помощью php и вызов cookie с помощью SESSION

Я делаю форму в HTML. Когда человек нажимает кнопку «Отправить», он проверяет, правильно ли заполнены определенные поля, так что пока это довольно простая форма.

Тем не менее, я хочу сохранить текст, который вводится в поля, если человек обновляет страницу. Таким образом, если страница обновляется, текст все еще находится в полях.

Я пытаюсь добиться этого, используя php и cookie.

   // Cookie

$saved_info = array();
$saved_infos = isset($_COOKIE['offer_saved_info']) ? explode('][',
$_COOKIE['offer_saved_info']) : array();

foreach($saved_infos as $info)
{
$info_ = trim($info, '[]');
$parts = explode('|', $info_);

$saved_info[$parts[0]] = $parts[1];
}

if(isset($_SESSION['webhipster_ask']['headline']))
$saved_info['headline'] = $_SESSION['webhipster_ask']['headline'];

// End Cookie

а теперь для поля ввода формы:

<div id="headlineinput"><input type="text" id="headline"
value="<?php echo isset($_SESSION['webhipster_ask']['headline']) ?
$_SESSION['webhipster_ask'] ['headline'] : ''; ?>"
tabindex="1" size="20" name="headline" /></div>

Я новичок в использовании SESSION в php, поэтому мой вопрос:

Есть ли более простой способ добиться этого без использования куки, как указано выше?
Или что я сделал неправильно в вышеупомянутом коде?

0

Решение

Во-первых, я уверен, что у вас должно быть круглые скобки, например:

echo (isset($_SESSION['webhipster_ask']['headline']) ? value : value)

Это не единственный вопрос, который вы задаете, хотя я думаю.

Если вы отправляете данные через форму, почему бы не проверить их, используя значения формы, и использовать значения формы во входном HTML-значении. Я сохраню их в сеансе только после того, как проверию данные и перейду дальше.

Например:

<?php
session_start();
$errors=array();

if($_POST['doSubmit']=='yes')
{
//validate all $_POST values
if(!empty($_POST['headline']))
{
$errors[]="Your headline is empty";
}
if(!empty($_POST['something_else']))
{
$errors[]="Your other field is empty";
}

if(empty($errors))
{
//everything is validated
$_SESSION['form_values']=$_POST; //put your entire validated post array into a session, you could do this another way, just for simplicity sake here
header("Location: wherever.php");
}
}
if(!empty($errors))
{
foreach($errors as $val)
{
echo "<div style='color: red;'>".$val."</div>";
}
}
?>
<!-- This form submits to its own page //-->
<form name="whatever" id="whatever" method="post">
<input type="hidden" name="doSubmit" id="doSubmit" value="yes" />
<div id="headlineinput">
<input type="text" id="headline" value="<?php echo $_POST['headline'];?>" tabindex="1" size="20" name="headline" />
<!-- the line above does not need an isset, because if it is not set, it will simply not have anything in it //-->
</div>
<input type="submit" value="submit" />
</form>
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]