这个和服务器上PHP的设置(php.ini文件)有关,通常的设置是error_reporting  =  E_ALL & ~E_NOTICE。这样就不报告E_NOTICE级别的错误;但如果是error_reporting  =  E_ALL,没有去除E_NOTICE的报告,就出现楼主这样的情况,如果楼主是购买的虚拟主机,则只能自己在程序上增加判断,如if (isset($_GET['u'])) $user = $_GET['u'];else $user='';等。

解决方案 »

  1.   

    代码在我的机子上正常,你把php.ini里面的错误屏蔽掉看看
      

  2.   

    楼上的两位老大,你们没有仔细看看他的代码吗?单就这个文件来说,他的代码中没有任何变量的传递,变量u的当然属于没有定义的,出错是肯定的,即使屏蔽错误提示,得到的结果也就是:Hello World!Hello,  $user是没有显示的。http://..../helloworld.php?u=xiaoyuehen这种方法是对的。或者:
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>测试文档</title>
    </head><body>
    <form action="" method="get">
      <input type="text" name="u">
      <input type="submit" value="ok">
    </form>
    <?php
    echo 'Hello World!';
    $user = $_GET['u'];
    echo "Hello, $user";
    ?>
    </body>
    </html>
      

  3.   

    谢谢两位!完全明白...看来比ASP麻烦一点...
      

  4.   

    to hlddn(西藏的那片天): 你说的很对...出错是肯定的. 我用了你的修改, 但我输入http://.../helloworld.php 照样出错..因为假如我是用户的话, 我就是想让页面出错(找漏洞, 如ASP), 现在我作为程序的开发者, 我想让用户没有这种可乘之机, 那我要怎么改呢?(2楼和3楼的方法是一种)为使程序健壮性增强, 我应该怎么写代码?
    if (isset($_GET['u'])) $user = $_GET['u'];else $user=''; 的方式有点麻烦(因为变量若多的话)..有其他的吗?
      

  5.   

    ( isset($_GET['u']) ) ? $user = $_GET['u'] : $user = "";