Я хочу передать значение 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.
Пожалуйста, помогите мне. Я пробовал все, что предлагают другие подобные вопросы, но ничего не помогает
Я думаю, ваша проблема связана с выражением if
которое вы поставили перед назначением значений $_SESSION
. Вы можете проверить, есть ли у вас данные в вашей базе данных, соответствующие вашему запросу, иначе вы никогда не получите эти два значения сеанса в вашем файле statusdata.php. Вы можете проверить мой ответ, назначив значения $_SESSION
без оператора if
и попробуйте снова получить к ним доступ.
if
и без, if
нет разницы, проблема все еще существует
У вас возникла проблема в вашем 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. Он покажет вам ошибку, если она будет продолжена!
login.php
я хочу использовать значение переменной post в statusdata.php
Не полный ответ, но ряд улучшений для скриптов:
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();
?>