2013-09-03 2 views
1

У меня проблема. Я уверен, что я действительно глуп, но, похоже, я не могу перенести переменную $ _SESSION. Я запускаю код с переменной с именем $ setup, которую я отправляю каждый раз как сброс. Каждый раз, когда я запускаю код, я увеличиваю $ setup, поэтому он начинается без значения, а затем имеет значение 1, а затем значение 2. Когда он один, я устанавливаю SESSION для опубликованного значения. В следующий раз, когда это два, СЕССИЯ, похоже, не имеет значения.

Это код, когда страница загружена:

<?php 
    session_start(); 
    $setup=$_POST['reset']; 
    if ($setup==NULL) 
    { 
     $setup=0; 
    } 
    elseif ($setup==1) 
    { 
     $_SESSION['value1']=$_POST['value1']; 
     $value1=$_SESSION['value1']; 
    } 
    elseif ($setup==2) 
    { 
     $value1=$_SESSION['value1']; 
     $_SESSION['value2']=$_POST['value2']; 
     $value2=$_SESSION['value2']; 
    } 
?> 

Когда установка один я могу распечатать value1 однако, когда установка два будет использовать этот код

echo $value2 . " " . $value1 . "."; 

Все, что я получаю value2, за которым следует точка. Я здесь что-то не так?

+1

Вы должны получить синтаксическую ошибку. Кстати, отступы ваш код, пожалуйста, это поможет прочитать его. – ComFreek

+2

Когда $ setup = 2, сеанс для value1 не определен, потому что он определен, только если setup = 1 – SaidbakR

+0

@ S € mS € m right !! – djot

ответ

0

Я исправил его. У меня есть кнопка сброса внизу, чтобы уничтожить сеанс, и в нем был PHP. Может быть, этот вопрос поможет любому, кто совершит эту ошибку. Я могу случиться.

0

Вы забыли конкатенацию до "." Строка

Должно быть:

echo $value2 . " " . $value1 . "."; 
+1

Я думаю, что все, что ему нужно, это 'echo $ value2. "". $ value1; ' –

+0

Может ли кто-нибудь мне помочь?Я обновил вопрос, чтобы лучше объяснить, что я пытаюсь сделать. –

1

В этой части кода:

elseif ($setup==2) 
{ 
    $value1=$_SESSION['value1'];//HERE 
    $_SESSION['value2']=$_POST['value2']; 
    $value2=$_SESSION['value2']; 
} 

$_SESSION['value1'] является пустой так $value1 будет пустой тоже вместо этого я предлагаю этот код:

elseif ($setup==2) 
{ 
    if(isset($_SESSION['value1']) $value1=$_SESSION['value1']; 
    else $value1='Some value for test'; 

    $value2=$_SESSION['value2']; 
} 

ТАКЖЕ:

echo $value2 . " " . $value1 "."; 

Должно быть:

echo $value2 . " " . $value1 . ".";//if you want dot in the end 

или:

echo $value2 . " " . $value1 ;//without dot int end of line 
+0

Почему люди downvote ????? –

1
<?php 
    session_start(); 
    if (!isset($_POST['reset'])) { 
    // do nothing or something more useful 
    } 
    else { 
    if ($_POST['reset'] == 1) { 
     $value1 = $_SESSION['value1'] = $_POST['value1']; 
    } 
    elseif ($_POST['reset'] == 2) { 
     $value1 = $_POST['value1']; // $_POST !!! Not $_SESSION['value1'], which is not set here! 
     $value2 = $_SESSION['value2'] = $_POST['value2']; 
    } 
    } 
?> 


$value1=$_SESSION['value1']; // you can't do this here (== 2), because you did not set $_SESSION['value1'] to anything before 
+0

Возможно, я раньше не делал этого. Я просматриваю программу, и каждый раз, когда я увеличиваю сброс. Это означает, что в первый раз он равен нулю. Мы ничего не делаем, и value1 публикуем в форме. Второй сброс времени - один, поэтому я устанавливаю SESSION на значение POST, а затем имеет другую форму со значением2. Третий сброс времени - два, поэтому я поставил другую СЕССИЮ в значение два и подумал, что первая СЕССИЯ по-прежнему имела значение из предыдущего раунда. –

1

Это зависит от того, что вы хотите повторить.

Пример:

$value1 = "hello"; 
$value2 = "Richard"; 

echo $value1." ".$value2; 
// will output "hello Richard" (Without the quotes) 

//using your code (and syntax corrected) 
echo $value1." ".$value2."."; 
// will output "hello Richard." (Without the quotes) 

Если вы хотите, чтобы точка быть эхом, вы должны окружить его в кавычки «», и ворваться и из PHP вары/текст и т.д. в эхо, как описано выше.

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