hoh*_*ner 17 php cookies global-variables
我有两个PHP文件.在第一个我基于$_GET值设置cookie ,然后调用一个函数,然后将该值发送到另一个文件.这是我在join.php中使用的一些代码:
include('inc/processJoin.php');
setcookie("site_Referral", $_GET['rid'], time()+10000);
$joinProc = new processJoin();
$joinProc->grabReferral($_COOKIE["site_Referral"]);
Run Code Online (Sandbox Code Playgroud)
然后,另一个文件(processJoin.php)将此值(以及其他文件)发送到将处理数据并将数据插入数据库的其他文件.
我遇到的问题是,当grabReferral()调用processJoin.php中的函数时,该$referralID变量未在全局范围内定义 - 其他函数processJoin.php似乎无法访问它以发送到其他文件/进程.
我在processJoin.php中试过这个:
grabReferral($rid) {
global $ref_id;
$ref_id = $rid;
}
someOtherFunction() {
sendValue($ref_id);
}
Run Code Online (Sandbox Code Playgroud)
但someOtherFunction似乎无法访问或使用该$ref_id值.我也尝试使用define()无济于事.我究竟做错了什么?
Fel*_*nen 31
你必须在第二个函数中定义全局变量..
// global scope
$ref_id = 1;
grabReferral($rid){
global $ref_id;
$ref_id = $rid;
}
someOtherFunction(){
global $ref_id;
sendValue($ref_id);
}
Run Code Online (Sandbox Code Playgroud)
费利克斯
Bra*_*tie 22
就个人而言,我会推荐$GLOBALS超级变量.
function foo(){
$GLOBALS['foobar'] = 'foobar';
}
function bar(){
echo $GLOBALS['foobar'];
}
foo();
bar();
Run Code Online (Sandbox Code Playgroud)
Vin*_*Vin 10
这是一个简单而有效的代码,用于从函数初始化全局变量:
function doit()
{
$GLOBALS['val'] = 'bar';
}
doit();
echo $val;
Run Code Online (Sandbox Code Playgroud)
输出为:
bar
Run Code Online (Sandbox Code Playgroud)
小智 5
以下作品。
<?php
foo();
bar();
function foo()
{
global $jabberwocky;
$jabberwocky="Jabberwocky<br>";
bar();
}
function bar()
{
global $jabberwocky;
echo $jabberwocky;
}
?>
Run Code Online (Sandbox Code Playgroud)
生产:
贾伯沃基
贾伯沃基
因此,似乎变量首先在函数内声明为全局变量,然后在该函数内初始化,从而获得全局范围。