0

ユーザーが私のオンラインストア(cartweaver 4 phpで構築された)のアカウントにログインした後、divを非表示にしようとしていますが、それを機能させることができないようです。

ユーザーがログインしているかどうかを定義するためのphpコードは次のとおりです。

if(!strlen($_SESSION["cwclient"]["cwCustomerID"]) ||
    $_SESSION["cwclient"]["cwCustomerID"] === 0 ||
    $_SESSION["cwclient"]["cwCustomerID"] === "0" ||
    $_SESSION["cwclient"]["cwCustomerType"] == 0 ||
    (isset($_SESSION["cwclient"]["cwCustomerCheckout"]) &&
       strtolower($_SESSION["cwclient"]["cwCustomerCheckout"]) == "guest"))

そして、ログイン時に非表示にしたいdivには、テーブルが含まれており、次のIDとクラスが与えられています。

  <div id="newcustomertable" class='newcustomer'>

私はcssを使用してこのメ​​ソッドを適用しようとしました:ステートメントがtrueの場合、Hidedivを表示します

しかし、それは私のテストサーバーで未定義の変数エラーを私に与えることになりました。

私は少しphp初心者であることを認めます。そのため、これをよりよく理解できる人が助けになり、解決策を見つけることができれば、それは大いにありがたいことです。

ありがとうございました。

4

4 に答える 4

0
<div id ="newcustomertable"></div>
<?
if(!isset($_SESSION["cwclient"]["cwCustomerID"]) || 
!strlen(@$_SESSION["cwclient"]["cwCustomerID"]) ||
@$_SESSION["cwclient"]["cwCustomerID"] === 0 ||
@$_SESSION["cwclient"]["cwCustomerType"] == 0 ||
(isset($_SESSION["cwclient"]["cwCustomerCheckout"]) &&
strtolower(@$_SESSION["cwclient"]["cwCustomerCheckout"]) == "guest"))
{
?>
<script>
document.getElementById("newcustomertable").style.display = "none";
</script>
<?  
}
?>

条件チェックが div 要素がレンダリングされた後に行われることを確認してください。要素の前に配置すると、ページが完全にレンダリングされないため、スクリプトは非表示にする div を取得できません。

OP の要求に基づく REVERSE 条件。私はこれがクルーゲであることを知っています、皆さん。私を炎上させないでください!

<div id ="newcustomertable"></div>
<?
if(!isset($_SESSION["cwclient"]["cwCustomerID"]) || 
!strlen(@$_SESSION["cwclient"]["cwCustomerID"]) ||
@$_SESSION["cwclient"]["cwCustomerID"] === 0 ||
@$_SESSION["cwclient"]["cwCustomerType"] == 0 ||
(isset($_SESSION["cwclient"]["cwCustomerCheckout"]) &&
strtolower(@$_SESSION["cwclient"]["cwCustomerCheckout"]) == "guest"))
{
 //do nothing
}
else
{
?>
<script>
document.getElementById("newcustomertable").style.display = "none";
</script>
<?  
}
?>
于 2012-08-17T21:52:58.813 に答える
0

未定義の変数の警告をスローしている可能性のある変数が少なくとも 3 つあります。

$_SESSION["cwclient"]
$_SESSION["cwclient"]["cwCustomerID"]
$_SESSION["cwclient"]["cwCustomerType"]

テストを行う前に、それぞれを isset() する必要があります。

于 2012-08-17T21:16:39.340 に答える
0

まず、PHP の strlen 関数はブール値ではなく INT を返します。

から変更する:

(!strlen($_SESSION["cwclient"]["cwCustomerID"])

に:

(strlen($_SESSION["cwclient"]["cwCustomerID"]) > 0)
于 2012-08-17T21:17:38.010 に答える
0

まず第一に、簡単にするために次の if ステートメントに単純化するだけでなく、

 if (($_SESSION["cwclient"]["cwCustomerID"]<>NULL)&&($_SESSION["cwclient"]["cwCustomerCheckout"]) == "guest")) { 
#code here 
}

第二に、ログインしている場合にdivを非表示にするには、次のようにすることができます

     if (($_SESSION["cwclient"]["cwCustomerID"]<>NULL)&&($_SESSION["cwclient"]["cwCustomerCheckout"]) == "guest")) { 
    $shouldhide="style='visibility:hidden;'";
    } else {
$shouldhide=""; 
}
echo"<div id='hidethis' $shouldhide>"; 

ただし、コンテンツがセキュリティ リスクである場合は、ソース コードにまだ表示されているため、まったく出力しない方がよいでしょう。

于 2012-08-17T21:25:36.530 に答える