PHP变量声明

时间:2014-02-11 06:46:27

标签: php mysql

我有一些简单的系统来上传文件,并使用数据库为每个特定用户跟踪它们。

我的问题是,我连接到文件checklogin.php中的数据库,该文件负责处理来自$_POST的{​​{1}}。

在文件'checklogin.php'中:

main_login.php

这是所有文件的全局变量。现在在文件$current_user_name = NULL; 中,我尝试包含signup.php来定义该变量:

checklogin.php

正如您所看到的,我正在尝试设置变量require_once '/checklogin.php'; ... mysql_query("INSERT INTO " . tbl_name . " (username, userpassword, userisadmin) VALUES (''" . $_POST['myusername'] . "'," . "'" . md5($_POST['mypassword']). "'," . "0)"); $current_user_name = $_POST['myusername']; header("location:login_success.php"); 的值,但当$current_user_name = $_POST['myusername'];转到文件header时,login_success.php同样,该变量再次设置为require_once '/checklogin.php';

我该如何解决这个问题?即如何存储当前用户以便所有文件都可以访问它?

3 个答案:

答案 0 :(得分:2)

你不能存储这样的变量。每个请求都将在服务器中执行。在这种情况下,我们必须使用会话请检查this

您的代码的另一个问题是SQL注入,请阅读this

答案 1 :(得分:1)

您无法访问checklogin.php

收到的参数

您可以做什么,您可以检查登录状态并在会话中设置当前用户。

从会话变量中,您可以访问并设置当前用户。

答案 2 :(得分:1)

你可以为它设置会话变量,并且你可以像这样使用它

session_start();
    if(isset($_SESSION['current_user_name']))
    {
      $current_user_name = $_SESSION['current_user_name'];
    }
    else
    {
      $current_user_name = NULL;
    }

并将会话变量设置如下

session_start();
require_once '/checklogin.php';
////...
mysql_query("INSERT INTO " . tbl_name . " (username, userpassword, userisadmin) 
         VALUES (''" . $_POST['myusername'] . "',"
         . "'" . md5($_POST['mypassword']). "',"
         . "0)");
$current_user_name = $_POST['myusername'];
$_SESSION['current_user_name'] = $current_user_name; // set your session here
header("location:login_success.php");