Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在两个不同的Php文件中使用变量?_Php - Fatal编程技术网

如何在两个不同的Php文件中使用变量?

如何在两个不同的Php文件中使用变量?,php,Php,我正在创建一个网站,显示访客信息。用户可以访问该页面并使用Textarea为其URL选择一个名称,该名称将保存为mysql数据库中的一个表 我在我的第一个php文件中使用了$name变量,它代替了文本“visitor\u tracking”。但是今天我注意到还有另一个php文件和更多的sql代码,我再次看到这个文件还有sql代码中使用的“visitor\u tracking”文本 但我认为我失败了,因为我根本不知道如何用名为$name的变量名替换“访问者跟踪”文本 <?php //defi

我正在创建一个网站,显示访客信息。用户可以访问该页面并使用Textarea为其URL选择一个名称,该名称将保存为mysql数据库中的一个表

我在我的第一个php文件中使用了$name变量,它代替了文本“visitor\u tracking”。但是今天我注意到还有另一个php文件和更多的sql代码,我再次看到这个文件还有sql代码中使用的“visitor\u tracking”文本

但我认为我失败了,因为我根本不知道如何用名为$name的变量名替换“访问者跟踪”文本

<?php
//define our "maximum idle period" to be 30 minutes
$mins = 30;
//set the time limit before a session expires
ini_set ("session.gc_maxlifetime", $mins * 60);
session_start();
$ip_address = $_SERVER["REMOTE_ADDR"];
$page_name = $_SERVER["SCRIPT_NAME"];
$query_string = $_SERVER["QUERY_STRING"];
$current_page = $page_name."?".$query_string;
//connect to the database using your database settings
include("db_connect.php");

if(isset($_SESSION["tracking"])){
    //update the visitor log in the database, based on the current visitor
    //id held in $_SESSION["visitor_id"]
    $visitor_id = isset($_SESSION["visitor_id"])?$_SESSION["visitor_id"]:0;
    if($_SESSION["current_page"] != $current_page)
    {
        $sql = "INSERT INTO visitor_tracking 
            (ip_address, page_name, query_string, visitor_id)
            VALUES ('$ip_address', '$page_name', '$query_string', '$visitor_id')";
        if(!mysql_query($sql)){
            echo "Failed to update visitor log";   
        }
        $_SESSION["current_page"] = $current_page;        
    }
} else {
    //set a session variable so we know that this visitor is being tracked

    //insert a new row into the database for this person
    $sql = "INSERT INTO visitor_tracking 
        (ip_address, page_name, query_string)
        VALUES ('$ip_address', '$page_name', '$query_string')";
    if(!mysql_query($sql)){
        echo "Failed to add new visitor into tracking log";
        $_SESSION["tracking"] = false;   
    } else {
        //find the next available visitor_id for the database
        //to assign to this person
        $_SESSION["tracking"] = true;
        $entry_id = mysql_insert_id();
        $lowest_sql = mysql_query("SELECT MAX(visitor_id) as next FROM visitor_tracking");
        $lowest_row = mysql_fetch_array($lowest_sql);
        $lowest = $lowest_row["next"];
        if(!isset($lowest))
            $lowest = 1;
        else
            $lowest++;
        //update the visitor entry with the new visitor id
        //Note, that we do it in this way to prevent a "race condition"
        mysql_query("UPDATE visitor_tracking SET visitor_id = '$lowest' WHERE entry_id = '$entry_id'");
        //place the current visitor_id into the session so we can use it on
        //subsequent visits to track this person
        $_SESSION["visitor_id"] = $lowest;
        //save the current page to session so we don't track if someone just refreshes the page
        $_SESSION["current_page"] = $current_page;
    }
}
但我也不知道这是否正确。我迫不及待地想知道我做错了什么

事先非常感谢


PS非常感谢Prix帮助我创建第一个php文件

首先,您需要在两个页面中启动会话。在将任何内容写入页面输出缓冲区之前,这应该是在页面中执行的第一件事

在第一页中,您需要将值分配给会话变量。如果您没有使用session\u start启动会话,则您没有会话,$\u session中的值将不可用

<?php
session_start(); // first thing in page
?>
<form action="" method="post" >
    ...
    <td><input type="text" name="gname" id="text" value=""></td>
    ...
</form>
<?PHP
if (isset($_POST['submit'])) {
  $name = $_POST['gname'];

  //...
  //Connect to database and create table
  //...

  $_SESSION['gname'] = $name;
  ...
  // REMOVE THIS Duplicate -> mysql_query($sql,$conn);
}
?>

...
...
在第二页中,您需要首先启动会话。在读取$\会话变量之前,您需要检查它是否有值(避免错误或警告)。接下来,读取该值并对其执行任何操作

<?php
session_start(); // first thing in page

...

if(isset($_SESSION['gname'])){
    // Read the variable from session
    $SomeVar = $_SESSION['gname'];
    // Do whatever you want with this value
}
?>

顺便说一下

  • 在第二页中,我找不到变量$name
  • 您创建表的方式存在严重的安全问题,您的问题中最少的是无法创建的坏表名。如果您有兴趣了解原因,请阅读有关SQL注入的内容
  • 在第一个页面中,您运行了两次$SQL命令,它将再次尝试创建表,但会失败
  • 您的
    if
    语句在创建表之前已完成。如果表单未提交或
    $\u POST['gname']
    为空,该怎么办
  • 你的第二页也有很多错误

您好,我没有阅读整篇文章,也没有试图理解您想告诉我们什么,但是:
mysql.*
已被弃用,请改用
mysqli
——例如。下一件事:转义SQL查询中的每个变量->
mysqli\u real\u转义\u字符串($connection,$variable)
通过不同的php文件使用变量您必须使用
$\u SESSION
,每个页面都要使用
$\u SESSION['variable']必须以
会话_start()开始@WigglerJtag,谢谢快速回复!我只是试图缩短php脚本,并删除了许多部分,使其他人更容易理解我的意思!我现在已经添加了整个页面。希望有帮助!我的英语不好,请原谅我的英语不好!我会试试看是否能用你的方法。。。。。非常感谢
session_start()存在,但变量不会转义!!每个人都可以进行SQL注入,并按照自己的意愿使用您的db。我第二次读了你的文章,不明白你想要什么。我很想帮助你,但到底是什么问题?问题正是我上面解释的!如果你看到了我的第一篇文章,也许会更容易理解!在我的网站上,我使用一个文本区供用户选择一个名字!当他们选择一个名称时,名称将被更改为一个数据库表,我使用$name变量作为Textarea,这意味着我试图使用变量$name将所有信息添加到同一个表中。而在此之前只有一个名为visitor_tracking的表。我只是不知道怎么做,因为我对mysql和php很陌生!您为什么不能将$name分配给会话变量并在第二个脚本中使用它呢?非常感谢您为我清理了很多麻烦,比如sql注入!编码未保存!我真的很高兴,也很感激!我现在会更加努力!第一部分对我很有效!上帝保佑你的朋友!
<?php
session_start(); // first thing in page

...

if(isset($_SESSION['gname'])){
    // Read the variable from session
    $SomeVar = $_SESSION['gname'];
    // Do whatever you want with this value
}
?>