我正在运行jQuery Ajax教程:
http://www.charlieperrins.com/2011/03/ajax-jquery-101/
一切都很完美,但我对这段代码有疑问:
<?php if ($_POST['user']) : ?>
<?php
$user_id = $_POST['user'];
if (isset($db_data[$user_id])) {
$data = $db_data[$user_id];
} else {
echo 'Sorry, no user data matched your request - please try again';
die;
}
?>
我最关心的是第一行。那条线做什么?我试图将所有代码保存在1组php标签中,但我不知道该怎么做。如果我知道第一行的作用,我或许可以弄明白。任何帮助表示赞赏。我正在尝试对此进行逆向工程以使其适合我的应用程序,但如果不知道该顶线的作用就无法完成。
感谢。
答案 0 :(得分:2)
所有这一切都是继续if阻止直到endif
。
没有endif
,因此除非$_POST['user']
中的数据未评估为false
,否则此脚本中的任何内容都不会运行。
我会用不同的方式写这个:
<?php
if (isset($_POST['user'])) {
$user_id = $_POST['user'];
if (isset($db_data[$user_id])) {
$data = $db_data[$user_id];
} else {
echo 'Sorry, no user data matched your request - please try again';
die;
}
}
?>
答案 1 :(得分:1)
<?php if ($_POST['user']) : ?>
表示如果$_POST['user']
评估为true
,请执行以下代码。
它可以压缩到这个:
<?php if ($_POST['user']) :
$user_id = $_POST['user'];
....
此外,
if ($_POST['user']) :
应该是
if (isset($_POST['user']) && !empty(trim($_POST['user']))) :
确保$_POST['user']
已设置(通常$_POST
包含表单中的变量),并且即使删除了空格也不为空。
见
答案 2 :(得分:1)
第一行测试$_POST
数组是否有键user
,并且该键包含“truthy”(非空,等等)值,表示表单已发布到这个脚本。如果没有发布表单数据,则脚本的其余部分将不会执行,例如,如果有人直接浏览到此PHP脚本而未使用预期的表单发布到该脚本。当表单回发到同一个PHP脚本时,这是一种常用的技术。首次到达脚本时,$_POST
将为空。将表单发回到同一脚本时,可以在包含值时执行不同的操作。
只需要一个<?php
代码:
<?php
if ($_POST['user']) {
$user_id = $_POST['user'];
if (isset($db_data[$user_id])) {
$data = $db_data[$user_id];
} else {
echo 'Sorry, no user data matched your request - please try again';
die;
}
}
?>
答案 3 :(得分:1)
答案 4 :(得分:0)
if ($_POST['user'])
行说的是:
如果变量$_POST['user']
存在且设置为非假值。
如果$_POST['user']
为0
,false
或''
(空字符串),则上述条件失败。
它也无法安全地检查该值。
你最好使用:
if (isset($_POST['user'])) && $_POST['user'] != '')
这样,当PHP display_errors
并且通知已打开时,不会输出警告。