【发布时间】:2019-01-01 05:34:30
【问题描述】:
我想将login.php POST 变量$user_key 和$user_id 的值传递给我使用过会话的另一个文件statusdata.php。在statusdata.php 中,我想在statusdata.php 文件的SQL 查询中使用那些会话变量值。
为了在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 的会话,但是如果我在login.php 中给出$user_key 和$user_id 的直接值,那么会话工作正常但不能使用POST 变量
再次,我想清除 POST 变量正在通过一个 android 应用程序从用户那里获取值,该应用程序要求 id 和 key 从 login.php 对用户进行身份验证,然后移动到另一个屏幕并检索与输入相关的数据id 和 key 使用 statusdata.php
帮我在会话中从login.php 获取post 变量的值,以便在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();
?>
注意 - 我正在以 JSON 格式获取 statusdata.php SQL 查询的输出,因为最后我在 android 中提取它。
请帮助我,我已经尝试了其他类似问题所建议的所有方法,但没有任何帮助
【问题讨论】:
-
对查询的错误报告和错误检查是一个开始。
-
这里也没有 HTML
-
这些是 Android 应用程序的 PHP 脚本 HTML 不是必需的,我已经提到过
-
在任何情况下,请参阅我的第一条评论。您没有检查错误并假设它按原样工作。
-
我已经尝试过错误检查,但我不明白为什么 post 变量没有进入 statusdata.php
标签: php mysql sql session post