似乎无法找到问题的答案。我已经将$ user声明为全局变量,然后通过cookie(如果存在)或表单设置它然后我调用start函数。 在启动函数中,我回显了它的一部分,但是我得到了未定义的变量:user,即使我定义了它。
<?php
global $user;
function ConsoleLog($message)
{
echo '<script>console.log("' . $message. '")</script>';
}
if (isset($_COOKIE["user"])){
$user = unserialize($_COOKIE["user"]);
start();
}
else{
if (isset($_POST['submit']))
{
$user = array(
"name" => $_POST['name'],
"class" => $_POST['class'],
"school" => $_POST['school'],
);
$expire=time()+60*60*24*365;
setcookie("user",serialize($user), $expire);
start();
}
else
{
echo "Welcome new user!\n<br/>";
echo '<form method="post">
Name: <input type="text" name="name">
Class:<select name="class">
<option value="9">9</option>
</select>
School: <input type="text" name="school">
<input type="submit" name="submit">
</form>';
}
}
function start(){
echo "Your name: " . $user['name'] . "!\n<br/>";
echo "Your class: " . $user['class'] . "\n<br/>";
echo "Your school: " . $user['school'] . "\n<br/>";
?>
<hr/>
<h2>HomePage</h2>
<?php
}
?>
答案 0 :(得分:2)
全球使用 -
$user = 'something';
function someFunction(){
global $user; // here global will make $user var accessible inside function.
echo $user;
}
如果您只想将变量设为全局变量,请在外部定义 -
define("USER","SOMETHING");
只需通过 -
即可访问echo USER;
答案 1 :(得分:0)
当你调用函数start()时,也传递参数:
if (isset($_COOKIE["user"])){
$user = unserialize($_COOKIE["user"]);
start($user);
}
或者您想要调用该函数的任何地方使用:start($user);
并将函数更改为接受参数:
function start($array){
echo "Your name: " . $array['name'] . "!\n<br/>";
echo "Your class: " . $array['class'] . "\n<br/>";
echo "Your school: " . $array['school'] . "\n<br/>";
?>
<hr/>
<h2>HomePage</h2>
<?php
}
答案 2 :(得分:0)
你不能将变量声明为全局变量,它不会那样工作。
相反,您需要将变量“导入”到每个函数中,方法是将global $user
放在那里,或者将其作为参数传递,或者将其存储在像$_SESSION
这样的超全局中。作为最后的手段,您可以使用$GLOBALS['user']
,但这很昂贵。
答案 3 :(得分:0)
如果!isset($_COOKIE["user"])
和!isset($_POST['submit'])
,则$user
将被取消定义。因此,在start()
时,您指的是未定义的$user
数组中的键。
此外,在全局空间中调用global $user
没有意义,应将其移入使用该变量的每个函数,例如
function start() {
global $user;
// ...
}
答案 4 :(得分:0)
按照你想要的方式,在你想要使用全局变量的每个函数中,在函数的开头声明它。
function start(){
global $user;
...
}
答案 5 :(得分:0)
这是您的代码
<?php
global $user;
function ConsoleLog($message)
{
echo '<script>console.log("' . $message. '")</script>';
}
if (isset($_COOKIE["user"])){
$user = unserialize($_COOKIE["user"]);
echo "Your name: " . $user['name'] . "!\n<br/>";
echo "Your class: " . $user['class'] . "\n<br/>";
echo "Your school: " . $user['school'] . "\n<br/>";
}
else{
if (isset($_POST['submit']))
{
$user = array(
"name" => $_POST['name'],
"class" => $_POST['class'],
"school" => $_POST['school'],
);
$expire=time()+60*60*24*365;
setcookie("user",serialize($user), $expire);
echo "Your name: " . $user['name'] . "!\n<br/>";
echo "Your class: " . $user['class'] . "\n<br/>";
echo "Your school: " . $user['school'] . "\n<br/>";
}
else
{
echo "Welcome new user!\n<br/>";
echo '<form method="post">
Name: <input type="text" name="name">
Class:<select name="class">
<option value="9">9</option>
</select>
School: <input type="text" name="school">
<input type="submit" name="submit">
</form>';
}
}
?>
<hr/>
<h2>HomePage</h2>
答案 6 :(得分:0)
我觉得你对这个答案感到困惑,最简单的答案如下:
<form method="" enctype="multipart/form-data">
写入form
代码。