最近在学PHP,有点疑问,先看看下面的代码
<html>
<body>
<form action="test02.php" method="post">
username :<input type="text"  name="username"/>
<input type="submit" value="submit" name="submit"/>
</form>
</body>
</html>点击提交后,跳到下面的页面代码处理
<?php
if(isset($_POST["submit"])) {
$usernme = $_POST["username"] ;
}
if(strlen($usernme) <6 ) {
echo "用户名不能小于6位" ;
}
?>我想问的是上面的$username变量的作用域不是只能在第一个if里面么??为什么第二个if也可以用到$username变量呢?求解答!!谢了

解决方案 »

  1.   

    谁说的啊,那又不是在方法里面?如果第一个if里面的执行了,那么以后就可以用了,如果第一个是一个function的话第二个if才不能用的
      

  2.   

    如果没有定义方法,那么$username在整个页面中都能用,如果定义了方法,那么$username只在这个方法中有用,其他地方就没用了。
      

  3.   

    这样的啊,那如果直接绕过第一个if语句(即不是通过表单提交的,而是直接访问这个页面,那为什么没有申明$username这个变量的情况下第二个if还可以用啊,怎么就不会报错呢?)
      

  4.   

    $username == $_GET['username'] && $username == $_POST['username']
    这是因为你的php.ini中的register_globles = On.导致的.详情请搜索register_globles 
      

  5.   

    嗯,明白了,原来还跟PHP的版本和安全性有关的!!谢了。http://www.php.net/manual/zh/security.globals.php