Как использовать значение переменной php после выполнения в другом файле - PullRequest
0 голосов
/ 05 июля 2018

Я работаю над приложением для Android, в котором я принимаю идентификатор приложения и имя кандидата от пользователя в качестве входного значения для аутентификации, которое сопоставляется с базой данных MYSQL с использованием PHP для перехода к следующему экрану при успешном подключении

login.php

<?php

session_start();

require "conn.php";

$user_name = $_POST["user_name"];
$user_id = $_POST["id"];

$mysql_qry = "select * from complaints where Applicant_Name = '".$user_name."' and Complaint_ID like '".$user_id."';";

$result = mysqli_query($conn, $mysql_qry);
if (mysqli_num_rows($result) > 0){

     $_SESSION["username"] = "$user_name";
     $_SESSION["userid"] = "$user_id";

    echo "Login Success";
}
else {
    echo "Login Not Success";
}
?>

Теперь на следующем экране я хочу показать содержимое, относящееся к этому конкретному идентификатору приложения и имени кандидата, для которого я хочу использовать значение переменных $ user_name и $ user_id из login.php в части WHERE запроса контента. php для получения нужных мне данных.

Сейчас я использую приведенный ниже код, который сейчас работает нормально, но я хочу использовать значения $ user_name и $ user_id для использования в WHERE части запроса content.php

content.php

 <?php

session_start();

require "conn.php";

$username = $_SESSION["username"];
$userid = $_SESSION["userid"];

 //creating a query
 $stmt = $conn->prepare("SELECT Complaint_ID, Applicant_Name, Category, Subject, Description FROM complaints WHERE Complaint_ID = '".$userid."' AND Applicant_Name = '".$username."'");

 //executing the query 
 $stmt->execute();

 //binding results to the query 
 $stmt->bind_result($id, $name, $cat, $sub, $desc);

 $complaint = array(); 

 //traversing through all the result 
 while($stmt->fetch()){
 $temp = array();
 $temp['Complaint_ID'] = $id; 
 $temp['Applicant_Name'] = $name; 
 $temp['Category'] = $cat; 
 $temp['Subject'] = $sub; 
 $temp['Description'] = $desc; 
 array_push($complaint, $temp);
 }

 //displaying the result in json format 
 echo json_encode($complaint);

?>

На Android нет проблем, все работает нормально, с той стороны PHP, мне нужна помощь.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

вы можете использовать PHP $ SESSIONS, чтобы справиться с этим. Для вашего login.php сделайте как ниже

    <?php
session_start();
require "conn.php";
$user_name = $_POST["user_name"];
$user_id = $_POST["id"];
            //your codes
    if (mysqli_num_rows($result) > 0){
         echo "Login Success";
     //just add this two sessions
         $_SESSION["username"] = "$user_name";
         $_SESSION["userid"] = "$user_id";
      } else {
      echo "Login Not Success";
             }
            ?>

Затем на content.php выполнить проверку сеансов, если успешно? получить значения, хранящиеся в $SESSIONS[], когда вход был успешным.

    <?php
    session_start();
    if (isset($_SESSION['userid'])) {
//if succesfully set, get the values stored sessions.
        $username = $_SESSION['username'];
        $userid = $_SESSION['userid'];
//just echo to check if set output results are correct
    echo "sessions were set successfully username is $username and userid is $userid";
    }else{
    echo "was unable to set sessions";
    }
   require "conn.php"
//creating a query
    $stmt = $conn->prepare("SELECT Complaint_ID, Applicant_Name, Category, Subject, Description FROM complaints WHERE Complaint_ID = '$userid' AND Applicant_Name = '$username'");  
//Rest of your codes
        ?>

Для получения дополнительной информации вы можете посетить https://www.w3schools.com/php/php_sessions.asp. Сессии доступны на всех страницах php, так что вы можете выбирать их из любого места, где хранится информация, и они не сохраняются на компьютере пользователя.

0 голосов
/ 05 июля 2018

Я думаю, что сначала вам нужно изменить ваш запрос на выборку в login.php, вы должны использовать '=' вместо

$mysql_qry = "select * from complaints where Applicant_Name like '$user_name' and Complaint_ID like '$user_id';";

до

$mysql_qry = "select * from complaints where Applicant_Name='".$user_name."' and Complaint_ID='".$user_id."' ";

и нужно сохранить эти $ user_name и $ user_id в сеансе и использовать эти значения сеанса в content.php, как показано ниже

В login.php установите значения как показано ниже

 if (mysqli_num_rows($result) > 0){
   $_SESSION['name']=$user_name;
   $_SESSION['id']=$user_id; 
   echo "Login Success";
 }

Не забудьте начать сеанс вверху обоих файлов

В файле content.php используйте запрос ниже

 $stmt = $conn->prepare("SELECT Complaint_ID, Applicant_Name, Category, Subject, Description FROM complaints WHERE Complaint_ID = '".$_SESSION['id']."' AND Applicant_Name = '".$_SESSION['name']."'");
...