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