【问题标题】:PHP how to display user dataPHP如何显示用户数据
【发布时间】:2018-04-17 14:00:48
【问题描述】:

我正在尝试显示登录的唯一用户,然后将其存储到我的数据库中的表中,例如,如果我以 James 身份登录,我想显示数据库中 James 的数据并将他的 id 存储到另一个table.据我了解 $_SESSION['login_user'];应该返回唯一的用户用户名。

当我运行时,我得到这个错误,这是输出:

注意:未定义索引:C:\xampp\htdocs\bid.php 第 3 行中的 login_user

注意:未定义变量:第 8 行 C:\xampp\htdocs\bid.php 中的 SESSION 感谢您联系我们

登录.php

<?php
   include("config.php");
   session_start();

   if($_SERVER["REQUEST_METHOD"] == "POST") {
      // username and password sent from form 

      $myusername = mysqli_real_escape_string($conn,$_POST['username']);
      $mypassword = mysqli_real_escape_string($conn,$_POST['password']); 

      $sql = "SELECT customer_id FROM customer WHERE email_adress = '$myusername' and password = '$mypassword'";
      $_SESSION['username'] = $myusername
      $result = mysqli_query($conn,$sql);
      $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
      $active = $row['customer_id'];

      $count = mysqli_num_rows($result);

      // If result matched $myusername and $mypassword, table row must be 1 row

 if($count >= 1) {
     $_SESSION['login_user'] = $myusername;

     header("location: index2.php");
  }else {
     $error = "Your Login Name or Password is invalid";
  }
   }
?>

bid.php:

<?php
    session_start();
    echo $_SESSION['username'];
require 'config.php';
//include "job.php" 
$jobid    = $_POST['job_id'];
$bid    = $_POST['bid'];
bidderid = $SESSION['username']
echo "$jobid";






$query   = "INSERT into bid (bid_amount,job_id) VALUES('" . $bid . "','" . $jobid . "')";
$success = $conn->query($query);

if (!$success) {
    die("Couldn't enter data: ".$conn->error);

}

echo "Thank You For Contacting Us <br>";

$conn->close();

 ?>

session.php

<?php
   include('config.php');
   session_start();

   $user_check = $_SESSION['login_user'];

   $ses_sql = mysqli_query($conn,"select email_adress from customer where email_adress = '$user_check' ");

   $row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);

   $login_session = $row['email_adress'];

   if(!isset($_SESSION['login_user'])){
      header("location:login.php");
   }
?>

【问题讨论】:

  • 您的login_user 很可能在您的会话中还不存在。您有一个类型:bidderid = $SESSION['username']
  • 我是否需要在会话设置用户名中添加一些内容作为数据库中用户的 ID?

标签: php mysql


【解决方案1】:

登录.php

<?php
   session_start();
   // session should start here

   include("config.php");


   if($_SERVER["REQUEST_METHOD"] == "POST") {
      // username and password sent from form 

      $myusername = mysqli_real_escape_string($conn,$_POST['username']);
      $mypassword = mysqli_real_escape_string($conn,$_POST['password']); 

      $sql = "SELECT customer_id FROM customer WHERE email_adress = '$myusername' and password = '$mypassword'";

      $_SESSION['username'] = $myusername; // you missed a semi colon

      $result = mysqli_query($conn,$sql);
      $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
      $active = $row['customer_id'];

      $count = mysqli_num_rows($result);

      // If result matched $myusername and $mypassword, table row must be 1 row

 if($count >= 1) {

     $_SESSION['login_user'] = $myusername; // $myusername contains username of this user

     $_SESSION['login_data'] = $row; // $row contains user record from the db. including customer_id etc..


     header("location: index2.php");
  }else {
     $error = "Your Login Name or Password is invalid";
  }
   }
?>

现在,如果成功,$_SESSION['login_user'] 将在 bid.php 和所有其他页面中可用。

  1. 在 session.php 中,请恢复到这些。

      <?php
       session_start(); 
       // this should be called first before including external files 
       include('config.php');
    
       $user_check = $_SESSION['login_user'];
    
       $ses_sql = mysqli_query($conn,"select email_adress from customer where email_adress = '$user_check' ");
    
       $row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);
    
       $login_session = $row['email_adress'];
    
       if(!isset($_SESSION['login_user'])){
          header("location:login.php");
       }
    ?>
    
  2. 在bid.php中请参考这个。

         $bidderid = $_SESSION['login_user']->username or  $_SESSION['login_user']['username']
    

希望这会有所帮助.. 编码愉快

【讨论】:

  • 嘿,我编辑显示我的 login.php,我尝试设置 $session 用户名,但由于某种原因,我仍然收到相同的错误
  • 好的,你不能在全局变量 $_SESSION 中使用局部变量,你在你的 bid.php 中也犯了这个错误,请改用 $_SESSION
  • 所以应该是 $_SESSION['username']
  • 您可以粘贴到您的 login.php 中,以便我可以在需要时帮助重新修改。
  • 会话登录用户让我有点困惑我更新了上面的代码,我在 login.php 中尝试做的是将 $SESSION[username] 设置为等于 $username 但我似乎仍然是出错
猜你喜欢
  • 1970-01-01
  • 2022-11-03
  • 2015-06-15
  • 1970-01-01
  • 2019-09-25
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
相关资源
最近更新 更多