直接打开页面 b,对于 b 来说,$_POST 是一个空的数组,里面没有元素,所以你获取 里面的元素,比如 $_POST['name'] 时会报错。解决办法就是判断下是否有这个值,如:
$name = isset( $_POST['name'] ) ? $_POST_['name'] : '';
a 页面提交数据到 b,对于 b 来说,$_POST 是有元素,表单项的值如果是空(没有写)的话,那么元素存在,且它的值是空值。如:
// 假设提交时,name 没有写
$name = $_POST['name']; // $name = ''
你要区别,空值只是这个元素的值是空,但是元素是存在的。而直接进入 b 页面,那么元素是不存在的。
这里有一个常见的方式:
a 页面 - 提交按钮设置一个 name,比如 $name=”submited"
b 页面 - 判断这个 $_POST['submited'] 即可,如果有这个值(isset($_POST['submited'])),说明有数据通过 post 方式提交过来。那么你可以直接(当然,不建议怎么做) $name = $_POST['name'];
参考:
// a.php
$_POST 变量用于收集来自 method=”post” 的表单中的值。
$_POST 变量是一个数组,内容是由 HTTP POST 方法发送的变量名称和值。
$_POST 变量用于收集来自 method=”post” 的表单中的值,带有 POST 方法的表单发送的信息,任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。
例如:
当点击提交按钮,URL 不会含有任何表单数据,看上去类似这样:
http://www.testpost.com.cn/hello.php
“hello.php” 现在可以通过 $_POST 变量来获取表单数据了(请注意,表单域的名称会自动成为 $_POST 数组中的 ID 键):
Welcome .
You are years old!
它报的错误只是notice而已·····或者你改改··
$name_my = isset($_POST['name']) ? $_POST['name'] : '';
这样就不会报错了··
要是跳转到b.php,那a.php种的form表单中应该是action=“b.php”吧