如何在 php 中使用 GLOBALS 到 post 表单数据
How to use GLOBALS in php to post form data
如何在主 PHP 文件中导入 GLOBALS 变量,这样我就不必每次都在 src 中更改项目名称?
name = $GLOBALS['project_name']
这就是问题所在。您在 html 中包含了 php 代码,但没有告诉 php 处理它。你可以这样试试:
<input type = "text" name="<?php echo($GLOBALS['project_name']) ?>" id = "project_name" class = "form-control" placeholder="Enter Project Name" value = "">
但是,正如您所写的那样,您可能根本不需要使用 $GLOBALS 超全局变量,因为所有内容都在同一范围内执行(您没有函数)。你可以简单地拥有这个:
config.php
<?php
$project_name = 'test';
?>
index.php
<?php
include_once('config.php');
?>
<form action="upload.php" method="post">
<h3 class="text-center">If Project Name does not exist, add new one below.</h3>
<div class = "form-group">
<label class="control-label col-sm-2" for="project_name">Project Name:</label>
<div class="col-sm-8">
<input type = "text" name="<?php echo($project_name) ?>" id="project_name" class="form-control" placeholder="Enter Project Name" value= "">
</div>
<button type="submit">Submit</button>
</div>
</form>
upload.php
<?php
include_once('config.php');
$project_name = $_POST[$project_name];
$version = $_POST['version'];
$description = $_POST['description'];
$data = "INSERT INTO demo VALUES(NULL, '$project_name', '$version', '$description', '$path')";
$download_data = "SELECT demo_id, demo_name, demo_version, demo_details, file
FROM demo
WHERE demo_name = '$project_name'
AND demo_version = '$version'";
?>
注意:upload.php 的最后一部分对于生产环境是危险的,如果你真的想 运行 这段代码,你应该阅读 "sql injection" 和 "prepared statements"在 sql 服务器上。
$GLOBALS
的解释
我不确定你对这个超全球做了什么研究,但我建议阅读有关范围的 php.net 页面:http://php.net/manual/en/language.variables.scope.php
此代码片段演示了正确的用法:
<?php
$a = 1;
$b = 2;
function Sum()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum();
echo $b;
?>
在这种情况下,输出将为 3。如果代码是在未使用 $GLOBALS 的情况下编写的:
<?php
$a = 1;
$b = 2;
function Sum()
{
$b = $a + $b;
}
Sum();
echo $b;
?>
输出将是 1。本例中 sum() 函数中的变量 $a 和 $b 是 "local variables" - 它们仅在 scope 内sum() 函数和 $a 和 $b 变量的不同内存位置(尽管具有相同的名称)分别分配了值 1 和 2。所以求和运算发生了,但它不会改变 echo 语句输出的 $b 变量的值(因为 sum() 中的 $b 与函数外部的 $b 不同)。
如果您声明一个全局变量,您可以像这样轻松地将它用作变量:
$GLOBALS['project_name'] = 'test';
echo $project_name; //test
你的情况:
<?php
global $project_name;
?>
<div class = "form-group">
<label class="control-label col-sm-2" for ="<?php echo $project_name; ?>">Project Name:</label>
<div class="col-sm-8"><input type = "text" name ="<?php echo $project_name;?>" id ="<?php echo $project_name; ?>" class = "form-control" placeholder="Enter Project Name" value = ""></div></div>
上次更新您的 PHP 代码:
global $project_name;
$project = $_POST[$project_name];
希望对您有所帮助!
所以我创建了一个 config.php 文件并声明了 GLOBALS['project_name'] = 'project_name';在里面。
调用时,我只使用$project_name调用它;
如何在主 PHP 文件中导入 GLOBALS 变量,这样我就不必每次都在 src 中更改项目名称?
name = $GLOBALS['project_name']
这就是问题所在。您在 html 中包含了 php 代码,但没有告诉 php 处理它。你可以这样试试:
<input type = "text" name="<?php echo($GLOBALS['project_name']) ?>" id = "project_name" class = "form-control" placeholder="Enter Project Name" value = "">
但是,正如您所写的那样,您可能根本不需要使用 $GLOBALS 超全局变量,因为所有内容都在同一范围内执行(您没有函数)。你可以简单地拥有这个:
config.php
<?php
$project_name = 'test';
?>
index.php
<?php
include_once('config.php');
?>
<form action="upload.php" method="post">
<h3 class="text-center">If Project Name does not exist, add new one below.</h3>
<div class = "form-group">
<label class="control-label col-sm-2" for="project_name">Project Name:</label>
<div class="col-sm-8">
<input type = "text" name="<?php echo($project_name) ?>" id="project_name" class="form-control" placeholder="Enter Project Name" value= "">
</div>
<button type="submit">Submit</button>
</div>
</form>
upload.php
<?php
include_once('config.php');
$project_name = $_POST[$project_name];
$version = $_POST['version'];
$description = $_POST['description'];
$data = "INSERT INTO demo VALUES(NULL, '$project_name', '$version', '$description', '$path')";
$download_data = "SELECT demo_id, demo_name, demo_version, demo_details, file
FROM demo
WHERE demo_name = '$project_name'
AND demo_version = '$version'";
?>
注意:upload.php 的最后一部分对于生产环境是危险的,如果你真的想 运行 这段代码,你应该阅读 "sql injection" 和 "prepared statements"在 sql 服务器上。
$GLOBALS
的解释我不确定你对这个超全球做了什么研究,但我建议阅读有关范围的 php.net 页面:http://php.net/manual/en/language.variables.scope.php
此代码片段演示了正确的用法:
<?php
$a = 1;
$b = 2;
function Sum()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum();
echo $b;
?>
在这种情况下,输出将为 3。如果代码是在未使用 $GLOBALS 的情况下编写的:
<?php
$a = 1;
$b = 2;
function Sum()
{
$b = $a + $b;
}
Sum();
echo $b;
?>
输出将是 1。本例中 sum() 函数中的变量 $a 和 $b 是 "local variables" - 它们仅在 scope 内sum() 函数和 $a 和 $b 变量的不同内存位置(尽管具有相同的名称)分别分配了值 1 和 2。所以求和运算发生了,但它不会改变 echo 语句输出的 $b 变量的值(因为 sum() 中的 $b 与函数外部的 $b 不同)。
如果您声明一个全局变量,您可以像这样轻松地将它用作变量:
$GLOBALS['project_name'] = 'test';
echo $project_name; //test
你的情况:
<?php
global $project_name;
?>
<div class = "form-group">
<label class="control-label col-sm-2" for ="<?php echo $project_name; ?>">Project Name:</label>
<div class="col-sm-8"><input type = "text" name ="<?php echo $project_name;?>" id ="<?php echo $project_name; ?>" class = "form-control" placeholder="Enter Project Name" value = ""></div></div>
上次更新您的 PHP 代码:
global $project_name;
$project = $_POST[$project_name];
希望对您有所帮助!
所以我创建了一个 config.php 文件并声明了 GLOBALS['project_name'] = 'project_name';在里面。
调用时,我只使用$project_name调用它;