如何在2个函数中使用PHP全局变量?

问题描述 投票:0回答:1

我正在尝试创建一个界面,其中研讨会描述可以在用户创建后在服务器上更新。有一个文本字段和一个按钮,可以通过分配的编号调出研讨会。 (这也是服务器上的submissions/workshop# 中的目录名称)。当我使用此方法设置变量 $workshopPath 时,我希望在使用字符串填写文本输入以更新研讨会标题时能够访问此全局变量。 $workshopPath 在“updateTextItems”函数中注册为空字符串,因此它将文本文件写入根目录而不是正确的创意工坊目录。我认为我正确地引用了函数中的全局变量,但这不起作用。我还尝试使用 $GLOBALS['workshopPath'],但这也不起作用。有人可以帮我弄清楚如何将变量传递给第二个函数吗?谢谢:-)

<?php

$workshopPath;

if (isset($_POST['gotoWorkshop'])) {
  if (empty($_POST['numberInput'])) {
    echo "Please enter a valid workshop number";
  } else { //Assign the name variable form the posted field info if one was entered.
    $workshopNumber = stripslashes($_POST['numberInput']);
    global $workshopPath;
    $workshopPath = "submissions/" . $workshopNumber . "/";
  }
}

if (isset($_POST['updateTextItems'])) {
  if ($_POST['titleInput']) {
    //Assign the name variable form the posted field info if one was entered.
    $titleInput = stripslashes($_POST['titleInput']);
  }
  
  if ($titleInput) {
    global $workshopPath;
    $titleFile = fopen($workshopPath . "title.txt", "w") or die("There was an error creating the title file.");
    fwrite($titleFile, $titleInput);
    fclose($titleFile);
  }
}

?>
php function scope global-variables fwrite
1个回答
-1
投票

我理解正确吗? 用户填写了研讨会的表格,然后单击提交并获取其他表格的文本?

我的猜测是您将请求发送到服务器。

所以 $GLOBAL 不适合你。它仅适用于每个请求,我认为大多数时候您并不真正需要它。

如果你想跨请求保存一些值,你需要一个会话。

您需要使用 session_start() 在两个脚本上启动会话。 之后,您可以使用 $_SESSION[] 来存储和获取您的值。

© www.soinside.com 2019 - 2024. All rights reserved.