Я хочу передать значение переменных login.php POST $user_key и $user_id в другой файл statusdata.php, для которого я использовал сеанс. В statusdata.php я хочу использовать это значение переменной сеанса в SQL-запросе файла statusdata.php.
Чтобы добиться этого в login.php, сначала я передаю значение переменной POST $_POST["user_key"] и $_POST["id"] в переменные $user_key и $user_id соответственно, затем я передаю значение переменной $user_key и $user_id в переменную сеанса $_SESSION["key"] и $_SESSION["id"] соответственно, затем в statusdata.php я вызываю переменную сеанса и передаю их значение в переменные $user_key и $user_id из statusdata.php
Теперь Проблема в значении переменной POST $_POST["user_key"] & $_POST["id"]
не собираются в сеанс statusdata.php, но если я даю прямые значения $user_key и $user_id в login.php, тогда сеанс работает нормально, но не с переменной POST
Опять же, я хочу прояснить, что переменная POST получает значения от пользователя через приложение для Android, которое просит id и key аутентифицировать пользователя из login.php, а затем перейти на другой экран и получить данные, связанные с введенными id и key с помощью statusdata.php.
помогите мне получить значение переменной post из login.php в сеансе, чтобы его можно было использовать в statusdata.php
login.php
<?php
// Start the session
session_start();
require "conn.php";
if (isset($_POST["id"])) {
$user_id = mysqli_real_escape_string($conn,$_POST["id"]);
}
if (isset($_POST["user_key"])) {
$user_key = mysqli_real_escape_string($conn,$_POST["user_key"]);
}
/* USING THESE DIRECT VALUE IN PLACE OF POST VARIABLE IS WORKING FINE IN SESSION FOR BOTH `login.php` and `statusdata.php` which indicate there is no problem with `statusdata.php` but using POST variable is working fine for `login.php` as authenticating user with `id` and `key` but value of POST variable is not going to session in `statusdata.php`.
$user_key = "8c9333343c6c4222418edb1d7c9f84d051610526085960a1732c7c3d763fff64ec7f5220998434c896dda243ae777d0fb213f36b9b19f7e4a244d5c993b8dfed";
$user_id = "96";
*/
$mysql_qry = "select * from applications where application_key = '".$user_key."' and application_id = ".$user_id." ;";
$result = mysqli_query($conn, $mysql_qry);
if (mysqli_num_rows($result) > 0){
$_SESSION["key"] = $user_key;
$_SESSION["id"] = $user_id;
echo "Login Success";
} else {
echo "Login Not Success";
}
?>
statusdata.php
<?php
// Start the session
session_start();
require "conn.php";
$user_key = "-1";
if (isset($_SESSION["key"])) {
$user_key = $_SESSION["key"];
}
$user_id = "-1";
if (isset($_SESSION["id"])) {
$user_id = $_SESSION["id"];
}
//creating a query
$stmt = $conn->prepare("SELECT applications.application_id, applications.applicant_name, applications.applicant_aadhaar, applications.applicant_phone, applications.subject, applications.date, applications.description, applications.chairperson_remark, applications.status, officer_accounts.name_of_officer, applications.officer_remark, applications.last_update_on
FROM applications INNER JOIN officer_accounts ON applications.account_id = officer_accounts.account_id
WHERE applications.application_id = ? AND applications.application_key = ? ;");
$stmt->bind_param('ss',$user_id,$user_key);
//executing the query
$stmt->execute();
//binding results to the query
$stmt->bind_result($id, $name, $aadhaar, $phone, $subject, $date, $description, $chairperson, $status, $officername, $officerremark, $lastupdate);
$applications = array();
//traversing through all the result
while($stmt->fetch()){
$temp = array();
$temp['applications.application_id'] = $id;
$temp['applications.applicant_name'] = $name;
$temp['applications.applicant_aadhaar'] = $aadhaar;
$temp['applications.applicant_phone'] = $phone;
$temp['applications.subject'] = $subject;
$temp['applications.date'] = $date;
$temp['applications.description'] = $description;
$temp['applications.chairperson_remark'] = $chairperson;
$temp['applications.status'] = $status;
$temp['officer_accounts.name_of_officer'] = $officername;
$temp['applications.officer_remark'] = $officerremark;
$temp['applications.last_update_on'] = $lastupdate;
array_push($applications, $temp);
}
//displaying the result in json format
echo json_encode($applications);
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
ПРИМЕЧАНИЕ - Я беру вывод SQL-запроса statusdata.php в формате JSON, так как в конце я извлекаю его в android.
Пожалуйста, помогите мне, я пробовал все, что предлагают другие похожие вопросы, но ничего не помогает
здесь тоже нет HTML
это PHP-скрипт для Android-приложения. HTML не требуется. Я уже упоминал об этом.
в любом случае см. мой первый комментарий. Вы не проверяете ошибки и предполагаете, что все работает как есть.
Я уже пробовал проверять ошибки, но я не понимаю, почему переменная post не входит в statusdata.php






У вас возникла проблема с вашим оператором SQL:
$mysql_qry = "select * from applications where application_key = '".$user_key."' and
application_id = '".$user_id."' ;";
Измените это на:
$mysql_qry = "select * from applications where application_key = '".$user_key."' and
application_id = ".$user_id." ;";
Существует высокая вероятность того, что тип данных application_id является целым числом. Попробуйте запустить его в командной строке MySQL. Если он продолжится, он покажет вам ошибку!
Сообщение bhai отлично работает для login.php, я хочу использовать значение переменной post в statusdata.php
Вы проверили инструкцию SQL, как я уже упоминал?
Не полный ответ, но ряд улучшений скриптов:
login.php:
<?php
// Start the session
session_start();
require "conn.php";
if (isset($_POST["id"])) {
$user_id = $conn->real_escape_string($_POST["id"]);
}
if (isset($_POST["user_key"])) {
$user_key = $conn->real_escape_string($_POST["user_key"]);
}
// check output is as expected
echo "ID:" . $user_id;
echo "Key:" . $user_key;
/* USING THESE DIRECT VALUE IN PLACE OF POST VARIABLE IS WORKING FINE IN SESSION FOR BOTH `login.php` and `statusdata.php` which indicate there is no problem with `statusdata.php` but using POST variable is working fine for `login.php` as authenticating user with `id` and `key` but value of POST variable is not going to session in `statusdata.php`.
$user_key = "8c9333343c6c4222418edb1d7c9f84d051610526085960a1732c7c3d763fff64ec7f5220998434c896dda243ae777d0fb213f36b9b19f7e4a244d5c993b8dfed";
$user_id = "96";
*/
$mysql_qry = <<<EOF
SELECT * from applications
WHERE application_key = "{$user_key}" and application_id = "{$user_id}"
EOF;
$result = $conn->query($mysql_qry);
if ($result->num_rows() > 0) {
$_SESSION["key"] = $user_key;
$_SESSION["id"] = $user_id;
echo "Login Success";
} else {
echo "Login Not Success";
}
?>
Statusdata.php:
<?php
// Start the session
session_start();
require "conn.php";
// use ternary operators, you can even try ?: operator
$user_key = isset($_SESSION["key"]) ? $_SESSION["key"] : '-1';
$user_id = isset($_SESSION["id"]) ? $_SESSION["id"] : '-1';
// use heredocs for creating a query, they let you format your query neatly
// also try using shorter names
$query = <<<EOF
SELECT app.application_id, app.applicant_name,
app.applicant_aadhaar, app.applicant_phone,
app.subject, app.date, app.description,
app.chairperson_remark, app.status,
oa.name_of_officer, app.officer_remark,
app.last_update_on
FROM applications app
INNER JOIN officer_accounts oa
ON app.account_id = oa.account_id
WHERE app.application_id = ? AND app.application_key = ? ;
EOF;
$stmt = $conn->prepare($query);
$stmt->bind_param('ss',$user_id,$user_key);
//executing the query
$stmt->execute();
$applications = array();
$result = $stmt->get_result();
// get the rows, use fetch_object or fetch_array
while ($row = $result->fetch_object()) {
$applications[] = $row;
}
//displaying the result in json format
echo json_encode($applications);
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
попробуйте напечатать значение $ user_key и $ user_id в первом скрипте, чтобы убедиться, что mysqli_escape_string не испортил их. Также повторите значения во втором скрипте, чтобы увидеть, получены ли они из $ _SESSION, хорошо
Снова происходит то же самое, что я упоминал в сообщении о предоставлении прямого значения идентификатору и ключу в login.php, тогда echo $ user_key и $ user_id работают как в login.php, так и в statusdata.php, но с использованием POST вместо прямого значение, которое сработало для login.php, но это значение не работает в statusdata.php
Я думаю, ваша проблема связана с оператором if, который вы поставили перед присвоением значений $_SESSION. Вы можете проверить, есть ли у вас в базе данных данные, соответствующие вашему запросу, иначе вы никогда не получите эти два значения сеанса в вашем файле statusdata.php.
Вы можете проверить мой ответ, присвоив значения $_SESSION без оператора if, и попытаться получить к ним доступ снова.
пробовал обоими способами с if и без if нет разницы проблема все еще существует
создание отчетов об ошибках и проверка ошибок в запросе - это только начало.