如何在php中使用GLOBALS来发布表单数据


How to use GLOBALS in php to post form data

如何在主PHP文件中导入GLOBALS变量,这样我就不必每次在src中更改项目名称?

name = $GLOBALS['project_name']

这就是问题所在。您已经将php代码包含在html中,而没有告诉php处理它。您可以这样尝试:

<input type = "text" name="<?php echo($GLOBALS['project_name']) ?>" id = "project_name" class = "form-control" placeholder="Enter Project Name"  value = "">

然而,当您编写它时,您可能根本不需要使用$GLOBALS超全局变量,因为所有内容都在同一作用域中执行(您没有函数)。你可以这样写:

config。

<?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服务器上实际运行这段代码,你应该阅读"sql注入"answers"准备语句"。

$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是"局部变量"——它们仅在sum()函数的作用域中,并且对于分别赋值为1和2的变量$a和$b来说,它们位于不同的内存位置(尽管具有相同的名称)。因此,sum操作发生了,但它不会改变echo语句输出的$b变量的值(因为sum()中的$b与函数外的$b不同)。

所以我做了一个config.php文件并声明GLOBALS['project_name'] = 'project_name';。

调用this时,我只使用$project_name;

如果你声明一个全局变量,你可以很容易地像这样使用它:

$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];

希望这对你有帮助!