2012-03-01 4 views
1

Можно создать дубликат:
PHP Pass variable to next page

Вот мой текущий код:

$search = $_POST['s']; 
$search = strtoupper($search); 
$search = strip_tags($search); 
$search = trim($search); 
$search = mysql_real_escape_string($search); 

мне нужно, чтобы быть в состоянии нести на переменную поиска $ на мой второй, третий , и т. д., страницы.

Я новичок в PHP и я вроде застрял здесь

+2

Взгляните на [сессии PHP] (http: // w ww.php.net/manual/en/book.session.php). Суперглобал '$ _SESSION' позволяет хранить информацию между страницами. – Bojangles

+2

См. Http://stackoverflow.com/questions/871858/php-pass-variable-to-next-page –

ответ

1

Казалось бы, что сессии ваш друг здесь. В простейшей форме сеансы будут просто помещать данные в файлы cookie, которые отправляются в браузер пользователя и из него. Убедитесь, что вы вызываете session_start(), прежде чем что-либо делать с сеансом, это начнет или возобновит сеансы пользователя. После этого вы можете использовать $_SESSION как глобальный ассоциативный массив, который будет сохраняться между страницами.

Ксандер уже связал вас с документами,Here are some simple examples. Убедитесь, что вы понимаете session_start(), иначе у вас появятся некоторые ошибки.

N.B. Не используйте этот основной формат сеанса для чувствительных данных. Посмотрите на использование чего-то вроде memcache для хранения данных и просто поместите ключ memcache в $ _SESSION. Также рассмотрите шифрование сеансов. Это более продвинутые вещи, которые вы должны думать о том, когда деле с аутентификацией пользователя/входа в системе

1

Хотя $_SESSION было предложено, еще один вариант заключается в использовании скрытого поля(с тем же именем и заполняется соответствующим значение) на последующем сгенерированные страницы. Затем, когда эти страницы будут отправлены назад, они также будут иметь поле, доступное в $_POSTS (на этот раз предоставленное скрытым полем , а не исходное текстовое поле).

Преимущества:

  • "Связанный к текущей странице"; действительно хорошо для некоторых страница контекстно-зависимые вещи! (Сеанс область видимости в браузере, а не страницы.)
  • Исключает необходимость сессии/куки (который не является проблемой, если сеанс уже требуется для других целей).

Недостатки:

  • «Связанные с текущей страницы»: значение будет потеряно, если перемещаться от внешней задней/следующего контекста. (Как отмечает Берт, небольшая модификация может использовать этот подход «скремблирования», чтобы изменить URL-адрес и использовать параметры GET, которые могут сделать данные универсальными настойчивыми, за счет «менее симпатичного» URL-адреса.)
  • Данные должны быть обработан как ненадежный и небезопасный, как и исходное сообщение.
  • Требуется популяция дополнительных [скрытых] полей.

Счастливое кодирование.

+0

mysql_real_escape_string ** не является ** «взломанным». Единственным недостатком этой функции является тот факт, что средний пользователь PHP не имеет понятия, как его использовать. –

+0

@ Col.Shrapnel Я не согласен. Он ** продолжает способствовать плохой практике ручного построения строки SQL **. Учитывая, что * оба * 'mysqli' * и *' PDO' доступны во многих системах PHP, я вижу * никакой причины * продолжать защищать ** старый подход * не используется * с помощью любого другого современного широко распространенного языка программирования ** , (О, пожалуйста, скажите * точно * почему -1, пожалуйста, потому что, если речь идет о моем отвращении к mysql_real_escape_string, это не имеет отношения к ответу.) –

+0

о, пожалуйста, не продавайте эту старую историю до * me *. Хорошо? –

0

Использование session_start() в каждой из страниц, которые вы хотите, чтобы доступ к поиску Название переменной

на первой странице

$search = $_POST['s']; 
$search = strtoupper($search); 
$search = strip_tags($search); 
$search = trim($search); 
$search = mysql_real_escape_string($search); 

установить переменную сеанса в

$_SESSION['searchStr']=$search 

затем в everyother странице

session_start(); // at the very begining 

if(isset($_SESSION['searchStr'])) { 

    $search=$_SESSION['searchStr'] 
} 
1

Предполагая, это строка поиска, есть только нормальный метод:

Во-первых, изменить метод формы на ПОЛУЧИТЬ Далее, просто передать переменную поиска в строке запроса с помощью метода GET.

Единственное изменение, которое вы должны применить это urlencode()

Таким образом, код должен быть

$query_string = 'search='.urlencode($_GET['search']); 
echo "<a href='?page=2&$query_string'>page 2</a>"; 

получения HTML-кода

<a href="?page=2&search=search+string">page 2</a> 

поэтому пользователь может нажать на эту ссылку, и вы будет содержать вашу строку поиска

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