php - 包含函数中未定义的 PHP 全局变量
问题描述
我正在尝试通过 PHP 发送一封自动电子邮件,该电子邮件会打印一些预定义的变量。如果我将 php 脚本直接写入主文件 (akkoord.php),它会按预期工作。但是,我想将脚本作为函数保存在单独的 php 文件 (email.php) 中,因为我也想将它包含在其他 php 文件中。我将脚本保存为 email.php,将其转换为函数 mail(),并将 email.php 包含在 akkoord.php 中。该函数工作并发送一封电子邮件,但变量(我在 akkoord.php 中定义的)没有通过。我认为这将是一个范围问题,所以我将它们重新定义为 email.php 中的全局变量。但是,它仍然不起作用。
(简化)Akkoord.php:
<html>
<head>
<?php
$naam = $_GET["naam"];
$reisnaam = $_GET["reisnaam"];
?>
<?php
include'email.php';
[some other code that works fine]
email();
?>
</head>
<body>
[some body]
</body>
</html>
和电子邮件.php:
global $reisnaam;
function email(){
global $reisnaam;
global $naam;
$to = 'my_email@email.my';
$subject = $reisnaam ;
$message = 'Hello'.$naam;
$headers = 'From: some@body.nn';
if(mail($to, $subject, $message, $headers))
echo "Mail sent";
else
$fout .= "Not sent";
}
?>
我检查了是否包含 email.php - 它是(毕竟,它确实发送了电子邮件)。函数 email() 的同上。关于我哪里出错的任何想法?
*编辑:修复了 $headers 中的 '
解决方案
谢谢乔希,微妙的暗示。我将变量作为参数传递,现在它可以按预期工作:
<?php
function email($reisnaam, $naam){
$to = 'my_email@email.my';
$subject = $reisnaam ;
$message = 'Hello'.$naam;
$headers = 'From: some@body.nn';
if(mail($to, $subject, $message, $headers))
echo "Mail sent";
else
$fout .= "Not sent";
}
?>
在 akkoord.php 我更改email()
为email($reisnaam,$naam)
.
我必须承认我不完全理解为什么第一种方法不起作用,但我很高兴这个方法起作用。谢谢!
推荐阅读
- aws-lambda - AWS Cognito:验证删除用户
- php - 需要 Laravel 验证如果带有数组索引
- google-apps-script - 为什么应用程序脚本返回的值比单元格中的值少一个
- python - 等待时返回python 3.8 Future而不是值
- django - 为什么字段值存储为一个集合?
- java - 使用 Java 提取 URL 之间的文本
- php - 如何使用客户令牌在 Magento 2 Rest API 中通过添加到购物车状态来获取产品数据
- html - 在背景图像内添加内容的矩形
- jupyter-notebook - RISE 幻灯片按钮在 Jupyter Lab 上消失
- java - 你如何通过另一个应用程序杀死android中的应用程序?