2012-04-18 14 views
0

я столкнулся с проблемой во всех моих PHP проектов является то, что с тех пор я использовал ООП в том, что если есть пользователь, посылающий формуне может хранить данные сессии между страницами

, когда он идет на обработку, и если это ошибка я сохранить сообщение в сессии и перенаправить их на ту же страницу

это образец и, конечно же, когда он перенаправляет это стирает все поля, что там было

, как, скажем, у меня есть Регистрационная форма, которая имеет

<?php if(!empty($message)) { echo $message } ?> 
<form action ="forms/register.php"> 
first name: <input type="text" name="first_name" /> 
username:<input type="text" name="username" /> 
<input type="submit" value = "submit" /> 
</form> 

и это то, что код в формах/register.php

if(isset($_POST['submit'])) { 
    $first_name = $_POST['first_name']; 
    $username = $_POST['username']; 

if(empty($first_name) || empty($username) { 
    $session -> message("please fill in all the fields"); 
    redirect("../register.php"); 
} else { 
    // do something else like insert query 
} 

} 

моя проблема, если first_name или user_name пуст, и он перенаправляет на register.php

и не вторит сообщение об ошибке, не проблема в том, что

но поля опорожнить first_name и user_name пустые

поэтому пользователь должен заполнить все это снова

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

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

Спасибо заранее

и жаль за то, что долго и раздражает

+0

Ну, кроме отсутствующей закрывающей скобки в PHP после пустого ($ username), POST-вары должны проходить нормально. Можете ли вы попробовать стиль гетто print_r ($ _ POST), выход; чтобы увидеть, что на самом деле происходит там? Также, возможно, проанализируйте заголовки, которые вы отправляете с помощью FireBug ... – HappyTimeGopher

+0

Кажется, вы используете класс для '$ session'. Не видя его кода, мы не имеем понятия, чтобы помочь вам. Пожалуйста, суммируйте класс '$ session' и разместите его здесь. Кроме того, вы используете фреймворк как CakePHP или CodeIgniter? – rcdmk

+0

Вместо того, чтобы использовать вход в случайные места, вы можете рассмотреть периоды в конце ваших предложений. – GolezTrol

ответ

2

Вы можете сохранить любые значения, которые вы хотите сохранить в форме после перенаправления страницы в переменных сеанса, а затем получить эти значения на странице формы и повторить их в атрибуте value элементов формы.

+0

. Думаю, мне нужно будет его хранить так, а затем $ username = $ _SESSION ['username'] = $ _POST ['username'] , и когда он перенаправляет, я попробую /> - это правильно? –

+0

Да, это должно быть правильно, за исключением того, что вы оставили закрывающую скобку в инструкции 'if'. Это должно быть 'if (! Empty ($ _ SESSION ['username']))' – ahruss

+0

Большое спасибо за помощь мне, я действительно ценю это –

1

Не уверен, что выдавать вам точно сталкиваются (также, что $ сессия находится внутри вашего рабочего процесса?). Тем не менее, я рекомендую использовать поддержку PHP inbuild. http://php.net/manual/en/features.sessions.php

Из самой ссылки выше:

<?php 
session_start(); 

if(isset($_SESSION['views'])) 
{ 
    $_SESSION['views']=$_SESSION['views']+1; 
} 
else 
{ 
    $_SESSION['views']=1; 
    echo "Views=". $_SESSION['views']; 
} 
?> 

Над кода просто отслеживает просмотры страниц. Переменная $ _SESSION сохраняется между загрузками страниц, и вы должны использовать ее для всех ваших требований к сеансу.

+0

Я использую класс, который является всем –

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