2011-10-31 5 views
3

내 로고가 일부 페이지에만 나타나고 다른 페이지에는 나타나지 않도록 지정하려고합니다. 표시하지 않으려는 유일한 페이지는 홈페이지와 /index.php입니다. 나는 큰 로고가 나타나고 사라지기를 원한다. 그래서 나는 작은 로고를 위해 그 반대를 할 수 있다고 생각했지만 나는 틀린 일을해야만한다.PHP if 문이 틀린 곳이 확실하지 않습니다.

<?php 
$dunpage = $_SERVER['REQUEST_URI']; if ($dunpage != '/index.php' || $dunpage != '/') {?>  
<h1 class="small-logo"> 
<a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a> 
</h1> 
<?php } 
?> 
<?php 
$currentpage = $_SERVER['REQUEST_URI']; if ($currentpage == '/' || $currentpage == '/index.php') {?> 
<h1 class="logo";> 
    <a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a> 
</h1> 
<?php } 
?> 
+1

'$ dunpage! = '/index.php'|| $ dunpage! = '/'이 조건은 ** 항상 ** TRUE로 평가됩니다. – zerkms

+0

빠른 답장을 보내 주셔서 감사합니다. 그들은 매우 도움이되었다. 나에게 많은 시간을 저축 했어 :-) – user1021330

+1

@ user1021330 Stack Overflow에 오신 것을 환영합니다. 답변에 만족하는 경우 점수 아래에있는 체크 표시를 클릭하여 허용으로 표시하십시오. –

답변

2

당신의 작은 로고

if ($dunpage != '/index.php' && $dunpage != '/') { 

을 시도 : 여기에 내 현재 코드입니다.

2

== 연산자를 올바르게 부정했지만 || 연산자는 부정한 것입니다. 운영자. dunpage가 /index.php가 아니거나 dunpage가/not가 아니라면, 기본적으로 항상 그렇게한다는 것을 의미합니다. 변경 || 작은 로고는 & &입니다. 대신 논리적 OR 첫 번째 조건

3

, 당신은 논리적 AND 사용되어야한다 ". 페이지가 index.php, 또는하지 / 다음 중 하나입니다하지 않을 경우 행동"효과적으로

$dunpage = $_SERVER['REQUEST_URI']; if ($dunpage != '/index.php' || $dunpage != '/') {?> 
// Should be 
$dunpage = $_SERVER['REQUEST_URI']; if ($dunpage != '/index.php' && $dunpage != '/') {?> 

, 당신이 말하는 한을 따라서이 두 경우 모두 그 반대가 될 수 있습니다. index.php이 아닌 경우 예를 들어 / 일 수 있습니다.

1

왜 다른 사람을 사용하지 않습니까?

<?php 
$currentpage = $_SERVER['REQUEST_URI']; if ($currentpage == '/' || $currentpage == '/index.php') { ?> 
<h1 class="logo";> 
    <a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a> 
</h1> 
<?php 
} else { 
?> 
<h1 class="small-logo"> 
    <a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a> 
</h1> 
<?php 
} 
?> 

(당신은 실제로.이 중 하나를 표시 할,하지만 난 그렇게 생각해야 그 큰 또는 작은 로고는 경우가 여기에 있다고 언급하지 않는다) 아니면와 in_array 사용할 수 있습니다()이 경우. 당신이 원 (http://php.net/manual/en/language.operators.comparison.php)을 수행하는 방법을 이해한다면 당신이 그것을 만들 수있는

<?php 
$displayMainLogo = array('/', '/index.php'); 
if (in_array($_SERVER['REQUEST_URI'], $displayMainLogo)) { ?> 
<h1 class="logo";> 
    <a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a> 
</h1> 
<?php 
} else { 
?> 
<h1 class="small-logo"> 
    <a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a> 
</h1> 
<?php 
} 
?> 

는,이는 간결하다.

<h1 class="<?php echo (in_array($_SERVER['REQUEST_URI'], $displayMainLogo)) ? 'logo' : 'small-logo' ?>";> 
    <a href="/" title="<?php echo $siteName; ?>"><span><?php echo $siteName; ?></a> 
</h1> 
관련 문제