需要帮助解密PHP代码

时间:2012-08-10 02:27:03

标签: php

我正在运行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标签中,但我不知道该怎么做。如果我知道第一行的作用,我或许可以弄明白。任何帮助表示赞赏。我正在尝试对此进行逆向工程以使其适合我的应用程序,但如果不知道该顶线的作用就无法完成。

感谢。

5 个答案:

答案 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']0false''(空字符串),则上述条件失败。

它也无法安全地检查该值。

你最好使用:

if (isset($_POST['user'])) && $_POST['user'] != '')

这样,当PHP display_errors并且通知已打开时,不会输出警告。