【发布时间】:2014-12-15 21:18:19
【问题描述】:
如果您在一个脚本中包含多个 PHP 脚本,这些变量是否可以被脚本访问?例如,我有一个名为 post.php 的文件。在这里面我有...
include(email.php);
include(input.php);
这些脚本中的变量是否是自包含的,即使它们“包含”在同一页面上?如果是,我如何在每个脚本中访问它们。我问是因为我不能在“post.php”中调用我在其他脚本中定义的变量。谢谢
使用完整代码进行编辑
这是我从用户那里收集数据的第一页:
<form action="postinput.php" method="post">
<input type="text" placeholder="Name"name="Name"><br>
<input type="text" placeholder="Email"name="Email"><br>
<input type="text" placeholder="Title"name="Title"><br>
<textarea placeholder="Post" rows="4" cols="22" placeholder="Post"name="Post"></textarea>
</form>
这是我获取这些数据并使用 fopen 从提供的数据中创建一个随机“发布”页面的第二页:
$getname = $_POST['Name'];
$getemail = $_POST['Email']; //Here is the email variable I am trying to pass
$gettitle = $_POST['Title'];
$myfile = fopen("$random" . ".php", "w");
$txt = "<?php include('post.php'); \$email = \"$getemail\";?>" //pass email variable and include post.php
fwrite($myfile, $txt);
print("you can see your post here:");
echo ('http://localhost/' . $random . '.php');
这里是 post.php。这应该包括我在上面传递的 $email 变量,但我什至无法回显该变量。如果我打开生成的 php 页面,我可以看到变量已声明,但由于某种原因我仍然无法访问它。
<?php
include('Header.php');
?>
<div id = "center">
<form action="" name="emailform" method="post">
<input type="text" name="name">
<input type="text" name="email">
<input type="text" name="message">
<input type="submit" name="Send" value="Send Email">
</form>
</div>
<?php
echo $email;
if (isset($_POST['Send'])) {
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$message = $_POST['message'];
$email_from = 'trustyclient@yoursite.com';
$email_subject = "You have a reply from better barter";
$email_body = "Message from: $visitor_email \n \n Message:$message";
$to = $email;
$headers = "from:adam\r\n";
mail($to,$email_subject,$email_body,$headers);
} else {
echo 'You have not hit the submit button yet';
}
?>
【问题讨论】:
-
信息不足。包括文件就像复制粘贴其内容一样。它没有什么神秘之处。如果您想知道特定代码在包含后无法正常工作,请提供代码,而不仅仅是您认为无法正常工作的“一般”概念。
-
在一个脚本中定义并包含的函数和变量在包含文件后的任何时候都可以在包含的任何其他脚本中使用,也包括父脚本。
-
这些不同的文件之间没有界限,您可以访问同一组资源,无论您在哪个文件中执行此操作。但是,可能还有其他范围可能会导致您的问题:单独的命名空间,或者变量不是全局定义的,而是在函数、类等内部定义的。一般来说,不定义全局变量是个好主意,但这可能是问题所在。
-
是的,如果它们没有在类中私下定义,你可以使用它们。但是如果要在函数内部使用变量,则必须在使用它们之前将它们定义为
global。喜欢:global $myvariable; -
用完整代码编辑