【问题标题】:How to get a user id from one php file and retrieve it in another php file如何从一个 php 文件中获取用户 ID 并在另一个 php 文件中检索它
【发布时间】:2017-02-17 11:11:14
【问题描述】:

如何从另一个 PHP 文件中获取一个 PHP 文件的 user_id。我正在使用$_SESSION['user_id'] 来做这件事,但它对我不起作用。谁能告诉我如何做到这一点以及$_SESSION['user_id'] 应该放在 PHP 文件中的哪个位置,或者是否有更好的方法。我想我把它放在login.php 文件中的正确位置,但不确定fitness.php. 我将它们用于我的Android 应用程序。下面是两个 PHP 文件。任何帮助将不胜感激,谢谢。

登录.php

<?php
session_start();
$error = NULL;

include_once('connection.php');
if(isset($_POST['txtUsername']) && isset($_POST['txtPassword'])){
    $username = $_POST['txtUsername'];
    $password = $_POST['txtPassword'];

    $query = "SELECT username, password, user_id FROM user WHERE username = '$username' AND password = '$password'";

    $result = mysqli_query($conn, $query);

    if($username == $error || $password == $error) {
        echo "Login Failed <br>";
    }
    elseif($result->num_rows > 0){
        $_SESSION['user_id'] = 'user_id';

        if(isset($_POST['mobile']) && $_POST['mobile'] == "android"){
            echo "success";
            exit;
        }
        echo "Login Successful";
        // header("location: login.php");
    }

    else{
        echo "Login Failed <br>";
    }
}
?>

健身.php

<?php
session_start();
$error = NULL;
include_once('connection.php');
if(isset($_POST['pulseOne']) && isset($_POST['pulseTwo']) && isset($_POST['pulseThree'])){
    $pulseOne = $_POST['pulseOne'];
    $pulseTwo = $_POST['pulseTwo'];
    $pulseThree = $_POST['pulseThree'];

    $fitnessResult = 100;
    $overall = 30000;
    $fitnessScore = -1;

    $fitnessScore = $pulseOne + $pulseTwo + $pulseThree;

    if($fitnessScore != 0){
        $fitnessResult = $overall/$fitnessScore;
        $fitnessResult = round($fitnessResult, 0);
    }
    else{
        $fitnessResult = NULL;
    }
    // $fitnessResult = mydivide($overall/$fitnessScore);

    $date = date("Y-m-d");
    $time = date("h:i:sa");

    // $user_id = $_POST['user_id'];

    $query = "INSERT INTO `fitness`(`fitnessScore`, `fitnessDate`,`fitnessTime`, `user_id`) VALUES ('$fitnessResult','$date','$time', 42)";
    $result = mysqli_query($conn, $query);


    if($pulseOne == $error || $pulseTwo == $error || $pulseThree == $error){
        echo "Insert Failed";
    }
    elseif($result > 0){
        if(isset($_POST['mobile']) && $_POST['mobile'] == "android"){
            echo "success";
            exit;
        }
        echo "Insert Successfully";
    }
    else{
        if(isset($_POST['mobile']) && $_POST['mobile'] == "android"){
            echo "Registration Failed";
            exit;
        }
        echo "Insert Failed";
    }
}

?>

【问题讨论】:

  • 您的代码有危险可能会被 SQL 注入。见how-can-i-prevent-sql-injection-in-php
  • 这里有很多问题,比如 SQL 注入漏洞。以纯文本等形式存储密码
  • 你必须在任何你想要 user_id 值的地方回显 $_SESSION['user_id']
  • 你的 elseif 不是真的。将其更改为 else if
  • 你得到或仍然需要帮助

标签: php android mysql session


【解决方案1】:

这里有很多需要注意的地方,首先如果你使用 else if 和 else 语句要正确使用的话,首先要重组你的 If 和 else 语句。您正在使用 mysqli 没有准备好的语句普通查询​​,尝试学习更好的方法,这样您的代码就不会容易受到攻击。最后但并非最不重要的一点是,您正面临这个问题,因为您试图将 Session 变量值与 post 关键字一起使用,试试这个:

$user_id = $_SESSION['user_id'] ;它会得到解决。

【讨论】:

    【解决方案2】:

    你可以这样做 首先将会话变量保存在另一个变量中,而不是尝试插入数据库中

     $user_id = $_SESSION['user_id'] ;
    

    尝试以这种方式呼应它

    echo $user_id;
    

    一旦你得到它,使用它或将它插入数据库

    更改您的代码
    $_SESSION['user_id'] = 'user_id';
    

    这个到

      $_SESSION['user_id'] = $row['user_id'];
    

    【讨论】:

    • 首先你需要为会话变量赋值,例如 $_SESSION['user_id'] = 42 ,然后你可以使用上面的代码在其他文件中获取它。
    • 将您的代码更改为我提供的代码后尝试,然后按我说的尝试获取
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多