Переменная POST не работает в сессии

0

Я хочу передать значение login.php POST переменных $user_key & $user_id в другой файл statusdata.php для которого я использовал сеанс. В statusdata.php я хочу использовать значение переменной сеанса в SQL-запросе файла statusdata.php.

Для этого в login.php сначала login.php значение переменной POST $_POST["user_key"] & $_POST["id"] переменной $user_key & $user_id соответственно, затем $user_id значение переменной $user_key & $user_id к переменной сеанса $_SESSION["key"] & $_SESSION["id"] затем в statusdata.php Я вызываю переменную $user_key и $user_id ее значение в переменной $user_key & $user_id of 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.

Пожалуйста, помогите мне. Я пробовал все, что предлагают другие подобные вопросы, но ничего не помогает

  • 0
    отчеты об ошибках и проверка ошибок в запросе - это начало.
  • 0
    здесь нет HTML
Показать ещё 3 комментария
Теги:
session
post

3 ответа

0

Я думаю, ваша проблема связана с выражением if которое вы поставили перед назначением значений $_SESSION. Вы можете проверить, есть ли у вас данные в вашей базе данных, соответствующие вашему запросу, иначе вы никогда не получите эти два значения сеанса в вашем файле statusdata.php. Вы можете проверить мой ответ, назначив значения $_SESSION без оператора if и попробуйте снова получить к ним доступ.

  • 0
    пробовал обоими способами, if и без, if нет разницы, проблема все еще существует
0

У вас возникла проблема в вашем 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. Он покажет вам ошибку, если она будет продолжена!

  • 0
    bhai post работает нормально для login.php я хочу использовать значение переменной post в statusdata.php
  • 0
    Вы проверили оператор SQL, как я уже упоминал?
Показать ещё 1 комментарий
-1

Не полный ответ, но ряд улучшений для скриптов:

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(); 

?>
  • 0
    извините сказать, это тоже не работает
  • 0
    попробуйте распечатать значения $ user_key и $ user_id в первом скрипте, чтобы убедиться, что mysqli_escape_string не уничтожил их. Также выведите значения во втором скрипте, чтобы увидеть, получены ли они из $ _SESSION.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню