如何在php脚本之间传递变量?

Posted

技术标签:

【中文标题】如何在php脚本之间传递变量?【英文标题】:How to pass variables between php scripts? 【发布时间】:2011-08-06 10:05:00 【问题描述】:

有没有办法在 php 脚本之间传递值和变量?

正式地,我尝试编写一个登录页面,当用户首先输入错误的输入时,另一个脚本将检查输入,如果输入错误,站点将返回到最后一个脚本页面并显示类似“输入错误”的警告。为此,我需要从我猜想的脚本中传递值。

问候... :P

【问题讨论】:

PHP 会话? php.net/manual/en/book.session.php 【参考方案1】:

你不能include(或include_oncerequire)另一个脚本吗?

【讨论】:

包含脚本时是否会传递所有变量,还是仅传递全局变量? 当您include 另一个脚本时,它的代码会“粘贴”在包含的脚本中,因此它会得到与您直接在第一个脚本中编写代码相同的内容。 谢谢 - 这与 require 不同吗?我曾尝试过要求,但似乎没有这样做。 如果include 找不到指定的文件会引发警告,require 会抛出致命异常。【参考方案2】:

您应该查看session variables。这涉及在服务器上存储与特定参考号(“会话 ID”)相关联的数据,然后浏览器在每次请求时发送该参考号(通常作为 cookie)。服务器可以看到同一个用户正在访问该页面,并设置$_SESSION 超全局来反映这一点。

例如:

a.php

session_start(); // must be called before data is sent

$_SESSION['error_msg'] = 'Invalid input';

// redirect to b.php

b.php

<?php

session_start();

echo $_SESSION['error_msg']; // outputs "Invalid input"

【讨论】:

这工作完美无缺,虽然我有点困惑,为什么你应该在 b.php 中使用“session_start()”,而它更像是“session_continue(),因为大概它没有” t 创建一个新会话。 就是这样。没有 session_start();您无法读取会话变量。【参考方案3】:

快速的方法是使用全局变量或会话变量。

global $variable = 'something';

“更好”的做法是包含脚本并通过参数传递变量,例如

// script1.php contains function 'add3'
function add3( $value ) 
  return $value + 3;


// script2.php
include "script1.php";
echo 'Value is '.add3(2); // Value is 5

【讨论】:

这个是我最喜欢的。有时你不能使用会话,但这样你甚至不必这样做。唯一的事情是你必须做global $variable; $variable = 'something';所以声明和赋值不在一行。【参考方案4】:

通过 GET 传递信息

    header('Location: otherScript.php?var1=val1&var2=val2');

会话

    // first script
    session_start(); 
    $_SESSION['varName'] = 'varVal';
    header('Location: second_script.php'); // go to other

    // second script
    session_start(); 
    $myVar = $_SESSION['varName'];

发帖:看看this。

【讨论】:

【参考方案5】:

如果你真的需要,我会说你也可以在缓存中存储一​​个变量。

【讨论】:

【参考方案6】:

你可以使用:

临时文件(例如tempnam()), 缓存(NoSQL:memcachedredis), 会话变量 ($_SESSION),但您需要先启动会话。

【讨论】:

【参考方案7】:

我使用extract() 方法在PHP 脚本 之间传递变量。它看起来像下面的例子:

1. 文件 index.php

<?php
$data = [
    'title'=>'hello',
    'content'=>'hello world'
];
extract($data);
require 'content.php';

2. 文件 content.php

<?php 
echo $title;
echo $content;

【讨论】:

以上是关于如何在php脚本之间传递变量?的主要内容,如果未能解决你的问题,请参考以下文章

在这种特殊情况下在 PHP 脚本之间传递值

在使用 PHP 的 SESSION 中传递变量的可靠性如何

如何在声明性 Jenkins 管道的各个阶段之间传递变量?

如何将变量作为标准输入从 PHP 传递到命令行

怎么用按键精灵在写的两个脚本之间传递变量?

将变量传递给从命令行运行的 PHP 脚本