Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

$variable не сохраняет в себе $_GET['id]'

vlad plotnikov Ученик (143), на голосовании 1 год назад
<?php require "db_connect.php";
session_start();
$variable = $_GET['id'];
if (isset($_POST['submit-content-message'])) {
$u_id = $_SESSION['user']['user_id'];
$form_content_message = $_POST['content-mesage-input'];
mysqli_query($db, "INSERT INTO `message_content` (`u_id`, `re_id`, `content`) VALUES ('{$u_id}', '{$variable}', '{$form_content_message}') ");
header("Location: message.php?id=".$variable);
}else{

};
?>


url выглядит как http://message.com/message.php?id=2
проблема в том что $variable не сохраняет в себе $_GET['id]', подскажите пожалуйста что делать и как это исправить
Голосование за лучший ответ
Татьяна Просветленный (36374) 1 год назад
Проблема заключается в том, что переменная $variable не сохраняет в себе $_GET['id']. Возможно, проблема связана с тем, что переменная $_GET['id'] не определена или не передана в URL. Для того, чтобы исправить эту проблему, можно попробовать следующее:
Убедиться, что параметр id передается в URL. Для этого можно проверить URL страницы, на которой используется этот код. Например, если URL выглядит как http://message.com/message.php?id=2, то параметр id равен 2.
Проверить, что переменная $_GET['id'] определена. Для этого можно использовать функцию isset(). Например, можно добавить следующий код перед строкой $variable = $_GET['id']:
 if (!isset($_GET['id'])) { 
die('ID не определен');
}
Проверить, что сессия корректно инициализирована. Для этого можно использовать функцию session_start(). Например, можно добавить следующий код в начало скрипта:
 session_start(); 
Проверить, что директория для хранения сессий доступна для записи. Для этого можно использовать функцию session_save_path(). Например, можно добавить следующий код перед вызовом функции session_start():
 if (!is_writable(session_save_path())) { 
die('Директория для хранения сессий не доступна для записи');
}
Проверить, что переменная $variable сохраняет значение $_GET['id']. Для этого можно добавить следующий код после строки $variable = $_GET['id']:
 echo $variable; 

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


Дополнительный ответ по дополнительному вопросу:
Проблема в том, что $variable не сохраняет $_GET['id'] в предоставленном коде. Неясно, какое сообщение об ошибке или поведение возникает при попытке использовать $variable в форме. Однако, судя по предоставленному коду, кажется, что $variable устанавливается только в том случае, если $_POST['submit-content-message'] не установлен. Это означает, что $variable устанавливается только при первой загрузке страницы с помощью $_GET['id'], но не при отправке формы. Чтобы это исправить, переменную $variable необходимо установить вне оператора if, чтобы она всегда устанавливалась независимо от того, отправлена ли форма или нет. Вот обновленный код:
 require "db_connect.php";  
session_start();
$variable = $_GET['id'];
if (isset($_POST['submit-content-message'])) {
$u_id = $_SESSION['user']['user_id'];
$form_content_message = $_POST['content-mesage-input'];
mysqli_query($db, "INSERT INTO `message_content` (`u_id`, `re_id`, `content`) VALUES ('{$u_id}', '{$variable}', '{$form_content_message}') ");
header("Location: message.php?id=".$variable);
}
?>

Благодаря этому изменению $variable всегда будет иметь значение $_GET['id'] и ее можно будет использовать в форме.
vlad plotnikovУченик (143) 1 год назад
$variable выводиться на странице, как через echo, так и другими способами, но именно для передачи в форму не работает
Татьяна Просветленный (36374) vlad plotnikov, дополнен ответ
evgen_devГуру (2808) 1 год назад
sql injection
Sergio 2.1 Оракул (67269) 1 год назад
Ваш код выглядит правильно, и он должен работать, если $_GET['id'] действительно существует. Возможно, проблема в том, что $_GET['id'] не устанавливается. Вот несколько вещей, которые вы можете проверить:

1. Убедитесь, что URL действительно содержит параметр id. Ваш URL должен выглядеть примерно так: http://message.com/message.php?id=2. Если параметра id нет в URL, то $_GET['id'] не будет установлен.

2. Попробуйте добавить некоторую отладочную информацию в свой код, чтобы увидеть, что происходит. Например, вы можете добавить var_dump($_GET); в начало своего кода, чтобы увидеть все значения в $_GET.

3. Если $_GET['id'] действительно не устанавливается, возможно, проблема в настройках сервера. Некоторые серверы могут быть настроены таким образом, чтобы игнорировать $_GET параметры.

4. Убедитесь, что ваш файл .htaccess (если он есть) не перезаписывает или не игнорирует параметры $_GET.

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