3

ここで 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 タグにまとめようとしていますが、その方法がわかりません。最初の行が何をするかを知っていれば、それを理解できるかもしれません。どんな助けでも大歓迎です。これをリバース エンジニアリングしてアプリに適合させようとしていますが、一番上の行が何をするのかを知らずに行うことはできません。

ありがとう。

4

5 に答える 5

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;    
    }
}
?>
于 2012-08-10T02:29:28.237 に答える
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はフォームからの変数が含まれていること) が確認され、空白が削除されても空ではないことが確認されます。

見る

于 2012-08-10T02:30:03.450 に答える
1

最初の行は、$_POST配列に key があるかどうかをテストuserし、そのキーに「真の」(特に空でない) 値が含まれているかどうかをテストし、フォームがこのスクリプトに投稿されたことを示します。フォーム データが投稿されていない場合は、スクリプトの残りの部分は実行されません。たとえば、誰かが投稿するフォームを使用せずにこの PHP スクリプトを直接参照した場合などです。これは、フォームが同じ PHP スクリプトにポストバックするときによく使用される手法です。最初にスクリプトに到達すると、$_POSTは空になります。フォームが同じスクリプトに戻されると、フォームに値が含まれている場合に異なるアクションを実行できます。

<?phpタグは 1 つだけ必要です。

<?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;    
  }
}
?>
于 2012-08-10T02:30:16.413 に答える
1

これは制御構造の代替構文です

于 2012-08-10T02:30:42.210 に答える
0

行はこれif ($_POST['user'])を言っています:

変数$_POST['user']が存在し、false 以外の値に設定されている場合。

、、または(空の文字列)の場合、上記の条件は失敗します$_POST['user']0false''

また、その値を安全にチェックしていません。

以下を使用することをお勧めします。

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

この方法では、PHPdisplay_errorsで通知がオンになっている場合に警告が出力されません。

于 2012-08-10T02:30:41.873 に答える