2015-04-24 2 views
2

Как сохранить значения полей из формы поиска (безопасно) после отправки формы в PHP?Сохранять значения в форме поиска после отправки

Этот метод безопасен?

<input type="checkbox" ... ="<?php if(isset($_POST['ThisRadioIsChecked'])) echo 'checked="checked"'; ?>" ... /> 
+1

Это относительно безопасно, но обратите внимание: если вы применяете указанный ввод к текстовым полям/текстовым полям (где пользовательский ввод поставляется), вам нужно будет сбежать от него и все, поскольку его можно легко использовать. – Darren

ответ

1

Если у вас есть что-то вроде:

<form action="this_page.php" method="post"> 
    <input type="text" name="search" placeholder="Search..." value=""> 
    <input type="submit" value="Go"> 
</form> 

Вы можете установить значение поиска ввода с $_POST массива (или $_GET, если вы использовали метод GET).

<?php 

// if data 'search' posted in POST method, make it safe in HTML then store it in $search. If 'search' data was not posted, fill it with an empty string ('') 
$search = (isset($_POST['search'])) ? htmlentities($_POST['search']) : ''; 

?> 

<form action="this_page.php" method="post"> 
    <input type="text" name="search" placeholder="Search..." value="<?= $search ?>"> 
    <input type="submit" value="Go"> 
</form> 

Я должен объяснить вам, что короткие теги не возможно быть разобран PHP, если ваш файл php.ini содержит: short_open_tag = Off

Тогда вам придется использовать стандартный метод сделать это: <?php echo $search; ?> скорее чем короткая: <?= $search ?>

Кстати, эта линия может быть немного запутанным для не опытных пользователей:

$search = (isset($_POST['search'])) ? htmlentities($_POST['search']) : ''; 

Вы можете заменить его:

if(isset($_POST['search'])) 
{ 
    $search = htmlentities($_POST['search']); 
} 
else 
{ 
    $search = ''; 
} 

Или даже:

$search = ''; 

if(isset($_POST['search'])) 
{ 
    $search = htmlentities($_POST['search']); 
} 

Кстати, если вы хотите, чтобы иметь возможность не держать значение:

<?php 

// if data 'search' posted in POST method, make it safe in HTML then store it in $search. If 'search' data was not posted, fill it with an empty string ('') 
$search = (isset($_POST['search'])) ? htmlentities($_POST['search']) : ''; 
// if reset asked, then empty $search 
$search = (isset($_POST['reset'])) ? '' : $search; 

?> 

<form action="" method="post"> 
    <input type="text" name="search" placeholder="Search..." value="<?= $search ?>"> 
    <input type="submit" value="Go"><?php if($search != '') echo '<input type="submit" name="reset" value="Reset">'; ?> 
</form> 

Вы также можете используйте флажок или что-то еще ... :)

+0

Используйте короткие теги вместо эха. value = "" –

+0

был хороший обзор, но он был автоматически отклонен, idk почему, возможно, я слишком долго смотрел на него ... Во всяком случае, gona редактирует с помощью короткого метода :) – Bobot

+0

Спасибо @ Bob0t. Как я могу всегда использовать местозаполнитель, когда нет ценности? Я могу это сделать, но мне нужен заполнитель, когда он пуст. Спасибо – user4766697

Смежные вопросы