【问题标题】:How to access a variable from one PHP page to another, without a form, link, or button?如何在没有表单、链接或按钮的情况下从一个 PHP 页面访问一个变量到另一个页面?
【发布时间】:2014-09-24 04:57:43
【问题描述】:

TLDR:-在不涉及formlinkbutton 的情况下,将variable 的内容从一个PHP file 传递到另一个的好方法是什么。

问题:-

所以在名为question_edit_form.php 的页面/文件中有一个form,其action 属性已设置为另一个名为question.php 的文件。 正在从question_edit_form.php 中的用户读取感兴趣的变量,然后显然使用$_POST 将其发送到question.php

现在,有第三个文件,名为renderer.php,它没有链接到其他两个文件。 我想在这个文件中使用感兴趣的变量。 那么如何从 renderer.php 内部访问在 question.php 中设置的那个变量?

【问题讨论】:

  • 使用会话变量。

标签: php http-post httprequest moodle http-get


【解决方案1】:

您可以将变量存储在会话中。

http://www.w3schools.com/php/php_sessions.asp

【讨论】:

  • 从不链接到 w3schools
  • @Dagon 为什么?那里的教程有问题吗?我确实经常按照他们的教程进行操作。
【解决方案2】:

第一个文件 -

session_start();
$_SESSION['your_variable'] = 'value';

其他文件-

session_start();
$var = $_SESSION['your_variable'];

这可能会有所帮助。

【讨论】:

    【解决方案3】:

    通常有两种方法可供您传递值

    1. Cookie

    2. 会话

    如何使用cookies:-

    setcookie(name, value, expire);
    

    例如

    setcookie("user", "Alex Porter", time()+3600);
    

    使用echo $_COOKIE['user'];访问它

    其次是会话。 以下是如何使用会话:-

     session_start();
     $_SESSION['varname']=value;
    

    访问页面:-

    session_start();
    echo $_SESSION['varname'];
    

    如果需要,请提供其他信息:- 确保在页面顶部使用 session_start() 否则您可能会遇到已发送错误/警告的标头,这可以通过输出缓冲 ob_start()

    再次修复

    【讨论】:

    【解决方案4】:

    听起来你正在使用 Moodle,在这种情况下 renderer.php 不是一个独立的文件;它包含question.php 使用的渲染器对象的类定义。

    所以...不需要在脚本之间传递参数。如果您确实必须直接从渲染器访问表单值,只需使用 Moodle 框架中的标准方法:required_param($name, $type)optional_param($name, $default, $type)

    【讨论】:

    • 没错,我正在使用 Moodle。感谢您的回复,但我实际上尝试使用required_param('qtype', PARAM_TEXT)attempt.php(调用渲染器的attempt_page() 函数)从渲染器访问它,但我不断收到A required parameter $qtype is missing。 Firefox 中的网络监视器还显示renderer.phpattempt.php 没有收到它,但它确实是从原始表单发送的。
    • 更糟糕的是会话变量对我也不起作用。
    • @Zarah 你如何使用renderer.php?它通常包含在脚本中(通过$PAGE->get_renderer()),不能直接从浏览器访问。
    • 是的,感兴趣的渲染器是Quiz 模块的渲染器。在quiz模块的attempt.php中,我们通过$PAGE->get_renderer('mod_quiz');获取渲染器实例,然后使用该渲染器实例调用方法attempt_page()...现在,我需要在这个attempt_page()方法中使用的变量被读入来自edit_question_form.php 中的用户(在Question plugin 中);此表单的action 设置为question.php,因此变量被发送到question.php。现在我需要从测验渲染器的question.php 访问这个变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 2010-11-18
    • 2019-11-29
    • 2021-08-19
    相关资源
    最近更新 更多