Как импортировать переменную GLOBALS в основной файл PHP, поэтому мне не нужно менять имя проекта каждый раз в src?Как использовать GLOBALS в php для отправки данных формы
ответ
Итак, я сделал конфиг.php-файл и объявили GLOBALS ['project_name'] = 'project_name'; в этом.
При вызове этого вызова я вызываю его только с помощью $ project_name;
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
<?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.
объяснение $ 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. Переменные $ а и $ Ь в пределах функции суммы() в этом примере, являются «локальные переменные» - они только в объеме внутри функции сумма() и различны (несмотря на то, что они имеют одинаковые имена) с переменными $ a и $ b, которым присваиваются значения 1 и 2 соответственно. Таким образом, операция суммирования происходит, но она не изменяет значение переменной $ b, выводимой выражением echo (поскольку $ b в sum() не совпадает с $ b вне функции).
Привет, это все равно отправьте название проекта пустым – siddparkar
Я действительно забыл поставить форму/отправить элементов, чтобы вы не могли даже представить его (отредактировали index.php сейчас). Вам нужно, чтобы все файлы были сохранены в одном каталоге. Если имя проекта пуст в выводе HTML из index.php, то включение должно быть неудачным или не может найти файл config.php. Вот пример index.php, показывающий, что атрибут «name» в HTML-форме не пуст: http://ideone.com/wcev5c – Luke
Если вы объявляете глобальной переменной вы можете легко использовать его в качестве переменной, как это:
$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];
Надеюсь, это поможет!
вы никогда не устанавливаете значение $ GLOBALS ['project_name'] или $ project_name внутри второй фрагмент кода - вам нужно будет включить код из первого фрагмента во второй. Иными словами: значения $ GLOBALS не сохраняются в разных вызовах отдельных скриптов. – Luke
Вы можете разместить полное содержимое index.php, включая теги ' Php' и'?> 'И оператор include? – Luke
@ Luke отправлено по мере необходимости – siddparkar
@ Luke Я следил за советом и как-то заставлял его работать. Но теперь у меня большие проблемы http://stackoverflow.com/questions/39984235/use-global-variables-to-dynamically-change-url – siddparkar