最好的答案是,即使你可以,你也不应该,允许远程重写你的服务器文件是一个巨大的安全风险
至于为什么它不安全,可以说你的 file.php 包含
$email = "defaultValue";
然后我使用您的功能将电子邮件设置为"; file_put_contents("file.php", ""); $junk = "
之后你的 file.php 会变成
$email = ""; file_put_contents("file.php", ""); $junk = "";
然后当你运行 file.php 时它会自行擦除
做你描述的事情的更好方法是
参数所以在file.php你有一个函数接受$email作为参数并使用它
文件包含
如果你有这个代码
$email = "blah@foo.bar";
include('file.php');
“file.php”在哪里
<?php echo $email;?>
将输出blah@foo.bar
你也可以将它与配置文件结合起来
即
include('config.php');
echo $email;
“config.php”在哪里
<?php $email = "blah@foo.bar";?>
Session 如果你设置了一个 Email 的 session 变量,那么你可以在同一个 session 中的任何文件中使用它
if(!isset($_SESSION))
{
session_start();
}
$email = "defaultValue"
if (array_key_exists("email", $_SESSION))
$email = $_SESSION["email"];
编辑:澄清上面的例子,因为你在概念化时遇到了困难
通过参数发送电子邮件
假设你有一个 PHP 文件
function SendEmail(array $email)
{
$transport = Swift_SmtpTransport::newInstance();
$transport->setLocalDomain();
// Create the message
$message = Swift_Message::newInstance();
$message->setTo($email);
$message->setSubject("This email is sent using Swift Mailer");
$message->setBody("Test");
$mailer = Swift_Mailer::newInstance($transport);
return $mailer->send($message);
}
或使用外部定义的变量
$email = "blah@foo.bar";
include('file.php');
file.php 在哪里
$transport = Swift_SmtpTransport::newInstance();
$transport->setLocalDomain();
// Create the message
$message = Swift_Message::newInstance();
$message->setTo($email);
$message->setSubject("This email is sent using Swift Mailer");
$message->setBody("Test");
$mailer = Swift_Mailer::newInstance($transport);
return $mailer->send($message);
$email = "blah@foo.bar";
include('file.php');
或使用会话
function updateEmail($email) {
if(!isset($_SESSION))
{
session_start();
}
$_SESSION["email"] = $email;
}
updateEmail("test@gmail.com");
file.php 在哪里
if(!isset($_SESSION))
{
session_start();
}
$email = "defaultValue"
if (array_key_exists("email", $_SESSION))
$email = $_SESSION["email"];
$transport = Swift_SmtpTransport::newInstance();
$transport->setLocalDomain();
// Create the message
$message = Swift_Message::newInstance();
$message->setTo($email);
$message->setSubject("This email is sent using Swift Mailer");
$message->setBody("Test");
$mailer = Swift_Mailer::newInstance($transport);
return $mailer->send($message);
以上所有方法都是安全的方法来更改外部代码文件中的变量,而不会使您的系统被黑客入侵