使用带有url的$ _GET方法在页面之间传递变量是否是好方法:
<a href="input_obj.php?id='$id'&method=plain
并在文件input_obj.php中使用以下代码:
$id = $_GET['id'];
$method = $_GET['method'];
OR
使用会话 - 有人知道如何?
答案 0 :(得分:4)
这取决于您的需求,实际上,例如,如果您在页面之间传递搜索参数,并且变量应该是持久的并且可供最终用户使用(例如通过书签),然后将它们传递给网址(但通常不会使用$id
中的"input_obj.php?id='$id'&method=plain
附近的引号)
如果您真的在脚本之间传递内部变量,最好通过$_SESSION
变量来完成。请记住,最终用户可以轻松修改通过URL传递的变量。除非它们打算供最终用户使用,否则这可能是一个真正的问题。通过使用$_SESSION
,您可以将脚本的变量与最终用户进行篡改隔离,以便在必要时对其进行隔离。 (当然,除非变量是由其他用户输入通过GET / POST / COOKIE产生的)
//page1.php
session_start();
$_SESSION['id'] = $id;
//page2.php
session_start();
echo $_SESSION['id'];
答案 1 :(得分:0)
GET变量是一种更好的方法。当您开始将变量放入会话时,它可能会产生副作用,例如将URL从浏览器复制/粘贴到浏览器或尝试书签会导致不同的页面(这对SEO来说是一场噩梦)。此外,如果您开始集中服务器b / c,则可能会出现并发症,您需要处理会话故障转移。
恕我直言,最好的解决方案是使用mod_rewrite来实现基于路径的变量......你可以获得具有GET变量所有优点的漂亮网址。
答案 2 :(得分:0)
GET
是将变量传递到另一个页面的合理方法。
$_SESSION
和cookies
是另一种方式,但它不允许用户为网页添加书签。
POST
是另一种方式,但它需要表单提交,这需要用户干预或javascript。
答案 3 :(得分:0)
这取决于数据的用途,类型和长度。通常,在查询字符串中传递变量很好。
请注意,在接受可变参数时,您需要验证它们是否符合您的预期。例如,我可以将?id=5
更改为?id=hello
,并可能会破坏您的申请。为了解决这个问题,我们可以将ID转换为整数:
$id = isset($_GET['id']) ? (int) $_GET['id'] : 0;
答案 4 :(得分:0)
您也可以使用Cookie。这些是这样发送的:
setcookie(name, value, expire, path, domain);
您可以省略路径和域变量。这必须在标记之前声明。名称只是您将获得它的名称。值将是返回的值,到期时间是cookie到期的时间(以time() + $timeTillExpire
的形式写入,其中timetillexpire是您设置的变量或常量值)。这当然有限制,如果该人有饼干它将无法正常工作。
你得到一个cookie:
$_COOKIE["name"];
并返回值
你做得很好。
答案 5 :(得分:-1)
如果您只是在PHP脚本中使用变量,则实际上并不需要“传递”它们。您可以全局创建变量并从另一个页面访问它。