在PHP4.2以后的版本中register_global默认为off
若想取得从另一页面提交的变量:
方法一:在PHP.ini中找到register_global,并把它设置为on.
方法二:在接收网页最前面放上这个extract($_POST);extract($_GET);(注意extract($_SESSION)前必须要有Session_Start()).
方法三:一个一个读取变量$a=$_GET["a"];$b=$_POST["b"]等,这种方法虽然麻烦,但比较安全.
<font color="#000000"><br><font face="新宋体" color="#0000bb"><?PHP <br>Ob_Start</font><font face="新宋体"><font color="#007700">();<br></font><font color="#0000bb">Session_Start</font></font><font face="新宋体"><font color="#007700">();<br>Echo </font><font color="#dd0000">"<pre class="brush:php;toolbar:false">"</pre></font></font><font face="新宋体"><font color="#007700">;<br>Echo </font><font color="#dd0000">"本页得到的_GET变量有:"</font></font><font face="新宋体"><font color="#007700">;<br></font><font color="#0000bb">Print_R</font><font color="#007700">(</font><font color="#0000bb">$_GET</font></font><font face="新宋体"><font color="#007700">);<br>Echo </font><font color="#dd0000">"本页得到的_POST变量有:"</font></font><font face="新宋体"><font color="#007700">;<br></font><font color="#0000bb">Print_R</font><font color="#007700">(</font><font color="#0000bb">$_POST</font></font><font face="新宋体"><font color="#007700">);<br>Echo </font><font color="#dd0000">"本页得到的_COOKIE变量有:"</font></font><font face="新宋体"><font color="#007700">;<br></font><font color="#0000bb">Print_R</font><font color="#007700">(</font><font color="#0000bb">$_COOKIE</font></font><font face="新宋体"><font color="#007700">);<br>Echo </font><font color="#dd0000">"本页得到的_SESSION变量有:"</font></font><font face="新宋体"><font color="#007700">;<br></font><font color="#0000bb">Print_R</font><font color="#007700">(</font><font color="#0000bb">$_SESSION</font></font><font face="新宋体"><font color="#007700">);<br>Echo </font><font color="#dd0000">""</font></font><font face="新宋体" color="#007700">;<br></font><font face="新宋体" color="#0000bb">?><br></font></font><br>
为什么我向另一网页传送变量时,只得到前半部分,以空格开头的则全部丢失
PHP代码:<font color="#000000"><br><font color="#0000bb"><?php <br>$Var</font><font color="#007700">=</font><font color="#dd0000">"hello php"</font><font color="#007700">;</font><font color="#ff8000">//修改为$Var=" hello php";试试得到什么结果<br></font><font color="#0000bb">$post</font><font color="#007700">= </font><font color="#dd0000">"receive.php?Name="</font><font color="#007700">.</font><font color="#0000bb">$Var</font><font color="#007700">;<br></font><font color="#0000bb">header</font><font color="#007700">(</font><font color="#dd0000">"location:$post"</font><font color="#007700">);<br></font><font color="#0000bb">?><br></font></font>
receive.php的内容:
;PHP代码:"<font color="#000000"><br><font color="#0000bb"><?PHP <br></font><font color="#007700">Echo </font><font color="#dd0000">"<pre class="brush:php;toolbar:false">"</pre></font><font color="#007700">;<br>Echo </font><font color="#0000bb">$_GET</font><font color="#007700">[</font><font color="#dd0000">"Name"</font><font color="#007700">];<br>Echo </font><font color="#dd0000">"</font></font>
正确的方法是:
PHP代码:<font color="#000000"><br><font color="#0000bb"><?php <br>$Var</font><font color="#007700">=</font><font color="#dd0000">"hello php"</font><font color="#007700">;<br></font><font color="#0000bb">$post</font><font color="#007700">= </font><font color="#dd0000">"receive.php?Name="</font><font color="#007700">.</font><font color="#0000bb">urlencode</font><font color="#007700">(</font><font color="#0000bb">$Var</font><font color="#007700">);<br></font><font color="#0000bb">header</font><font color="#007700">(</font><font color="#dd0000">"location:$post"</font><font color="#007700">);<br></font><font color="#0000bb">?><br></font></font>
在接收页面你不需要使用Urldecode(),变量会自动编码.
规范你的SQL语句
在表格,字段前面加上"`",这样就不会因为误用