質問

私はPHPにかなり慣れていないため、会社のWebサイトを作成しています。私は入手した既存のコードを使用していますが、正しく動作させることができないようです-どんな助けでも大歓迎です!

変数 $ id があります。この変数は、ページに表示する製品カテゴリタイプを識別します。最初にid変数が設定されていることを確認する必要があります。設定されていない場合は、変数をカテゴリ0にデフォルト設定します。

私が持っているコードは次のとおりです。

setdefault($id, 0);

function setdefault(&$var, $default="") 
{
   if (!isset($var)) 
   {
      $var = $default;
   }
}

アドレスwww.website.com/browse.phpを使用すると、デフォルトで$ id = 0になります。アドレスがwww.website.com/browse.php?id=3の場合、$ idを3に設定し、関連する製品を表示することを期待しています。ただし、$ idを設定しても、デフォルトは0のままです。コードに明らかな誤りがありますか?

役に立ちましたか?

解決

おそらく、PHPが$ _POSTと$ _GETをグローバル変数として使用することを期待しています。 PHPは以前はこのように設定されていましたが、新しいバージョンではこれらの変数を明示的に参照する必要があります。

これを試すことができます:

setdefault(

おそらく、PHPが$ _POSTと$ _GETをグローバル変数として使用することを期待しています。 PHPは以前はこのように設定されていましたが、新しいバージョンではこれらの変数を明示的に参照する必要があります。

これを試すことができます:

$id = array_key_exists('id', 

おそらく、PHPが$ _POSTと$ _GETをグローバル変数として使用することを期待しています。 PHPは以前はこのように設定されていましたが、新しいバージョンではこれらの変数を明示的に参照する必要があります。

これを試すことができます:

setdefault(

おそらく、PHPが$ _POSTと$ _GETをグローバル変数として使用することを期待しています。 PHPは以前はこのように設定されていましたが、新しいバージョンではこれらの変数を明示的に参照する必要があります。

これを試すことができます:

<*>

さらに簡単(三項演算子を使用):

<*>GET['id'], 0); function setdefault(&$var, $default="") { if (!isset($var)) { $var = $default; } }

さらに簡単(三項演算子を使用):

<*>GET) ?

おそらく、PHPが$ _POSTと$ _GETをグローバル変数として使用することを期待しています。 PHPは以前はこのように設定されていましたが、新しいバージョンではこれらの変数を明示的に参照する必要があります。

これを試すことができます:

setdefault(

おそらく、PHPが$ _POSTと$ _GETをグローバル変数として使用することを期待しています。 PHPは以前はこのように設定されていましたが、新しいバージョンではこれらの変数を明示的に参照する必要があります。

これを試すことができます:

<*>

さらに簡単(三項演算子を使用):

<*>GET['id'], 0); function setdefault(&$var, $default="") { if (!isset($var)) { $var = $default; } }

さらに簡単(三項演算子を使用):

<*>GET['id'] : 0;

さらに簡単(三項演算子を使用):

<*>GET['id'], 0); function setdefault(&$var, $default="") { if (!isset($var)) { $var = $default; } }

さらに簡単(三項演算子を使用):

<*>

他のヒント

まず、これがPHP 5.Xの場合、&amp;を使用して参照渡しで変数を渡さないことを強くお勧めします。そう言われています。 isset関数呼び出しは、関数で常にtrueになります。しかし、setdefault($ id、0);で未定義変数の警告を受け取ります;

代わりにこれを試してください。

$id = isset($id) ? $id : 0;

$ idが設定されていない場合、setdefault($ id、0)を呼び出すと警告が生成されます。 setdefaultのような関数はPHPでは機能しません。代わりにこれを使用してください。

if (!isset($id)) $id = 0;

$ _ GETや$ _POSTなどの配列変数に対してこれを行う場合、次のようにできます。

function getuservar($A, $index, $default = '') {
    if (!isset($A[$index])) return $default;
    if (get_magic_quote_gpc()) return stripslashes($A[$index]);
    return $A[$index];
}

$clean_id = getuservar(

$ idが設定されていない場合、setdefault($ id、0)を呼び出すと警告が生成されます。 setdefaultのような関数はPHPでは機能しません。代わりにこれを使用してください。

if (!isset($id)) $id = 0;

$ _ GETや$ _POSTなどの配列変数に対してこれを行う場合、次のようにできます。

<*>

すぐに$ _GET配列の使用を停止し、残りのコードでクリーンアップされた変数のみを使用するため、この戻りフォームの方が適しています。外部変数を一度消去すると、コード内で外部変数に再び触れることはありません。 $ Aは、$ _ GET、$ _ POST、$ _ REQUEST、または$ _COOKIEです。

また、迷惑なmagic_quoteを処理するため、変数のデータはユーザーが送信したテキストであることがわかります。ユーザーまたはデータベースに返送するときは、再度クリーンアップすることを忘れないでください。

GET, 'id', 0);

すぐに$ _GET配列の使用を停止し、残りのコードでクリーンアップされた変数のみを使用するため、この戻りフォームの方が適しています。外部変数を一度消去すると、コード内で外部変数に再び触れることはありません。 $ Aは、$ _ GET、$ _ POST、$ _ REQUEST、または$ _COOKIEです。

また、迷惑なmagic_quoteを処理するため、変数のデータはユーザーが送信したテキストであることがわかります。ユーザーまたはデータベースに返送するときは、再度クリーンアップすることを忘れないでください。

$ id はどのように設定されますか? register_globals がオフの場合(およびPHP 4.2以降ではデフォルトでオフになっている場合)、 $ _ GET ['id'] または $ _ POST [代わりに 'id'] (または $ _ REQUEST ['id'] ですが、それを避ける理由があります)。

クエリ文字列から $ id を設定するコード( browse.php?id = 3 )も含める必要があります。 PHPの register_globals 設定を考えてみてください。この設定は、クエリ文字列に含まれるときに変数を自動的に作成します。数年前から、この機能を再び有効にしないでください。これは非常に悪い考えです。

クエリ文字列から取得する変数は、使用する前に型/安全性をチェックする必要があります。たとえば、 $ _ GET スーパーグローバルから変数を取得し、数値であるかどうかを確認し、そうでない場合はデフォルトを設定します:

if (!is_numeric(

クエリ文字列から $ id を設定するコード( browse.php?id = 3 )も含める必要があります。 PHPの register_globals 設定を考えてみてください。この設定は、クエリ文字列に含まれるときに変数を自動的に作成します。数年前から、この機能を再び有効にしないでください。これは非常に悪い考えです。

クエリ文字列から取得する変数は、使用する前に型/安全性をチェックする必要があります。たとえば、 $ _ GET スーパーグローバルから変数を取得し、数値であるかどうかを確認し、そうでない場合はデフォルトを設定します:

<*>GET['id']) { setdefault(

クエリ文字列から $ id を設定するコード( browse.php?id = 3 )も含める必要があります。 PHPの register_globals 設定を考えてみてください。この設定は、クエリ文字列に含まれるときに変数を自動的に作成します。数年前から、この機能を再び有効にしないでください。これは非常に悪い考えです。

クエリ文字列から取得する変数は、使用する前に型/安全性をチェックする必要があります。たとえば、 $ _ GET スーパーグローバルから変数を取得し、数値であるかどうかを確認し、そうでない場合はデフォルトを設定します:

<*>GET['id'], 0); }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top