2016-10-21 9 views
1

誰かがこれを手伝ってくれますか?IFおよび/または式> cantが動作するようになる

私は、米国またはAUの訪問者のために別のコンテンツを表示しようとしています。 (必要に応じてユーザーが国を切り替えることができるように)私はそれが仕事を得るカント

if (($jsonobj->countryCode == "AU" || $_SESSION['username'] == "AU") && ($jsonobj->countryCode !== "US" || $_SESSION['username'] !== "US")) 
{ 
    echo 'australian content'; 
} 
if (($jsonobj->countryCode == "US" || $_SESSION['username'] == "US") && ($jsonobj->countryCode !== "AU" || $_SESSION['username'] !== "AU")) 
{ 
    echo 'us content'; 
} 

をIPを地理的位置特定し、また、PHPのセッションを使用しています - 基本的に私は、IPによって、自動のいずれかがコンテンツを表示することの柔軟性をしたいですか、手動で切り替えることができます。何か案は?

+0

あなたの問題は何ですか? –

答えて

0

我々が持っている

/** 
* GEO_IP  Session country_code Result 
* 
* AU   AU      AU   AU || AU AND 
* AU   US      US 
* US   US      US 
* US   AU      AU   US || AU 
* 
*/ 
if(($geo_ip_country_code == "AU" || $_SESSION['country_code'] == "AU") && 
    ($geo_ip_country_code == "US" || $_SESSION['country_code'] == "AU") 
) { 
    echo 'australian content'; 
} else { 
    echo 'us content'; 
} 

しかし、ここにパターンがあるようです!基本的にGEO_IPはセッションの国コードを最初に設定するために使用されるかもしれませんが、どの国にいるかを決定するのはセッションですので、上記を単純化することができます。

注:$ _SESSION ['country_code']がすでに設定されていて、設定されている国の最初のページでこれを行うと仮定している場合は、更新しません。

Aよりよいソリューションあなたのセッションを設定し、あなたがこのようなものを使用することができ

...

if(!isset($_SESSION['country_code'])){ 
     $_SESSION['country_code'] = $geo_ip_country_code; 
} 

そして、それは単に現在のセッション値

に選ぶの問題です
$country_code = $_SESSION['country_code']; 

switch(strtolower($country_code)){ 
    case 'au': 
     echo "Aussie Content"; 
     break; 
    case 'usa': 
     echo "USA Content"; 
     break; 
    default: 
     echo "Sorry you can not access this."; 
} 
+0

の場合は両方のコンテンツが表示されません。この種の機能はページをオンにしたときに機能しますが、geo_ipを使用してAUまたはUS地域のページにアクセスしたときには機能しません –

+0

セッションの値を設定するのは、geo_ipからのページ読み込みに書き込まれますか? – TimBrownlaw

+0

さて、それは私の他の質問だった - 私は持っているPHPのヘッダーで: session_start(); $ _SESSION ['country'] = $ jsonobj-> countryCode; しかし、それは毎回リセットされてしまいます。ユーザが入力したページに関係なく一度だけ実行したいのです –

0

if条件が間違っていました。 両方の条件を同時に確認していました。

これは問題を解決するはずです。

if ($jsonobj->countryCode == "AU" || $_SESSION['username'] == "AU"){ 
    echo 'australian content'; 
} 
if ($jsonobj->countryCode == "US" || $_SESSION['username'] == "US"){ 
    echo 'us content'; 
} 
+0

ユーザ名がAUまたは国コードがUS –

0

どちらのフィールドでも、表示する単語、文字、またはフレーズを検索することができます。それは両方が含まれている場合、それはあなたが複数ある場合は、コードを書く保存する関数を作成することができます

if((bool)strpos(strtolower($jsonobj->countryCode . $_SESSION['username']), 'au')) { 
    // Australlian 
} 

if((bool)strpos(strtolower($jsonobj->countryCode . $_SESSION['username']), 'us')) { 
    // American 
} 

(あなたはどちらか一方をしたい場合は、場合は、2番目を削除し、他にそれを変更)の両方が表示されます:

function checkDisplay($code) use ($jsonobj) { 
    return (bool)strpos(strtolower($jsonobj->countryCode . $_SESSION['username']), $code); 
} 

はそれが好きで使用します。...だから

if(checkDisplay('au')) { 
    // Australian 
} elseif(checkDisplay('us')) { 
    // USA 
} else { 
    // default or error 
} 
関連する問題