2015-01-22 6 views
0

Моя переменная сеанса меняется только на правильное значение после того, как страница была загружена во второй раз. Такое поведение проявляется странно из-за того, что другая переменная сеанса (matchid) правильно настроена в первый раз, когда загружается страница. Переменная, которая не устанавливается должным образом, если (номер обзора), она устанавливается в нижней части фрагмента кода.Переменные сеанса устанавливаются только после обновления страницы.

Кодекс

Я извиняюсь за длинный фрагмент кода, но я понятия не имею, где ошибка:

if ($stmt = $dbc->prepare("SELECT matchid, user1, user2, user1_accept, 
user2_accept FROM matches WHERE user1_accept = ? or user2_accept = ? 
LIMIT 
1")) { 
$stmt->bind_param('ii', $id, $id); // Bind id to parameter. 
$stmt->execute(); // Execute the prepared query. 
$stmt->store_result(); 

// get variables from result. 
$stmt->bind_result($matchid, $user1, $user2, $user1_accept, 
$user2_accept); 
$stmt->fetch(); 
$num_rows = mysqli_stmt_num_rows($stmt); 
if ($num_rows == 0){header('Location: /nomatches.php');}  
$_SESSION['matchid'] = $matchid; 
} 
print_r($_SESSION); 

if ($user1 != $id){ 
echo 'user 1 !=';  
$reviewnumber = 'user2_accept'; 
echo $reviewnumber;  
if ($stmt = $dbc->prepare("SELECT aboutme, friend, picture FROM 
userprofile 
WHERE id = ? LIMIT 1")) { 
$stmt->bind_param('i', $user1); // Bind id to parameter. 
$stmt->execute(); // Execute the prepared query. 
$stmt->store_result(); 

// get variables from result. 
$stmt->bind_result($aboutme, $friend, $picture); 
$stmt->fetch(); 
$picture = implode('/', array_map('rawurlencode', explode('/',  
$picture))); 
} 


if ($stmt = $dbc->prepare("SELECT full_name FROM users WHERE id = ? 
LIMIT 1")) { 
$stmt->bind_param('i', $user1); // Bind id to parameter. 
$stmt->execute(); // Execute the prepared query. 
$stmt->store_result(); 

// get variables from result. 
$stmt->bind_result($full_name); 
$stmt->fetch(); 
} 

} 

if ($user2 != $id){ 
echo 'user 2 !='; 
$reviewnumber = 'user1_accept'; 
echo $reviewnumber;  
if ($stmt = $dbc->prepare("SELECT aboutme, friend, picture FROM 
userprofile WHERE id = ? LIMIT 1")) { 
$stmt->bind_param('i', $user2); // Bind id to parameter. 
$stmt->execute(); // Execute the prepared query. 
$stmt->store_result(); 

// get variables from result. 
$stmt->bind_result($aboutme, $friend, $picture); 
$stmt->fetch(); 
$picture = implode('/', array_map('rawurlencode', explode('/', 
$picture))); 
} 


if ($stmt = $dbc->prepare("SELECT full_name FROM users WHERE id = ? 
LIMIT 1")) { 
$stmt->bind_param('i', $user2); // Bind id to parameter. 
$stmt->execute(); // Execute the prepared query. 
$stmt->store_result(); 

// get variables from result. 
$stmt->bind_result($full_name); 
$stmt->fetch(); 
} 


} 

$_SESSION["reviewnumber"] = $reviewnumber; 

Переменная: reviewnumber, правильно повторил на первой загрузке страницы , поэтому я не понимаю, почему переменная сеанса неправильно установлена.

+0

Является 'session_start();' там и где он находится? Кроме того, это внутри всех страниц, используя сеансы? –

+0

session start находится в верхней части страницы, он также находится на всех страницах. Странный аспект заключается в том, что одна из переменных сеанса устанавливает первый раз, а другая - нет. –

+0

Попробуйте определить его дальше, даже прямо внизу, где вы начинаете сеанс. –

ответ

0

Значения сеанса были напечатаны до изменения значения сеанса, поэтому новое значение сеанса отображалось только при загрузке следующей страницы. Если у кого-то еще есть аналогичная проблема, это определенно важно проверить.

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