0

空の場合は $_GET 変数を設定したい。しかし、それは機能していないようです。

これが私がこれまでに持っているものです。

if(!$_GET["profile"]) 
{
      $_GET["profile"] = null;  
}

編集

私がこれをやろうとしている全体的な理由は、.htaccess に 2 つのバニティ URL が設定されているためですが、2 番目のバニティ URL をスキップする方法を見つけようとしているので、something.com/home に移動する必要はありません。 / <-- 2 番目のスラッシュに注意してください。2 番目のスラッシュを付けないと、404 エラー ドキュメントが表示されます。基本的に、2 番目のスラッシュを付ける必要がないように許可するにはどうすればよいでしょうか。その結果、GET 変数が空になります。

これが私の.htaccessです。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d   
RewriteRule ^([^/]*)/([^/]*)$ /index.php?p=$1&profile=$2 [L]
ErrorDocument 404 /redir404.php

私が言ったように、これが機能し、ErrorDocument に送信されないようにするには、URL をhttp://ncms.us/home/に設定する必要があります。

4

4 に答える 4

3

まず、この行は「未定義のインデックス」通知を生成します。

if ( ! $_GET["profile"])

isset()これらの通知を避けるために使用することをお勧めします。

次に、スクリプトは正常に動作するはずですが、値が の変数NULLが実際に「設定」されていないため、つまずく可能性があります。

if ( ! isset($_GET["profile"]))
{
    $_GET["profile"] = null;  
}
var_dump(isset($_GET["profile"])); // will print FALSE

http://php.net/manual/en/function.isset.php isset — 変数が設定され ていて NULL でない
かどうかを判断する

$_GET["profile"]ただし、スクリプトに値がある間はNULL、通知を生成せずに引き続き使用できます。

$_GET直接読み取るよりも、新しい変数を作成する方がよい場合があります。

$profile = isset($_GET["profile"]) ? $_GET["profile"] : NULL;

スーパーグローバルに値を注入すると、グローバル アクセス権があるため、他のスクリプトに奇妙な副作用が生じることがあります。それを避けるのが最善です。

于 2012-11-23T17:39:19.257 に答える
0

!isset($_GET["profile"]) を使用して、設定されていないかどうかを確認します。

于 2012-11-23T17:25:33.367 に答える
0

http://php.net/manual/en/function.empty.php

empty( )— 変数が空かどうかを判別する

于 2012-11-23T17:33:45.257 に答える