2012-11-09 2 views
0

현재 개인 웹 사이트를 개발 중입니다. 처음으로이 작업을 수행 한 것은 아니지만 SSI 구현에 대한 본격적인 첫 번째 시도입니다. 그러나 나는 CGI 환경 변수 중 하나를 비교의 일부로 사용하는 if-else 지시문을 사용하여 벽을 돌았습니다.SSI : CGI 환경 변수와의 문자열 비교 실패

일부 제한된 디버깅 시도 후에도 모든 출력과 문서는 비교 결과가 이어야하며이 완전 실패 함을 의미합니다. 이것은 사실이 아니며 if-else 지시문에 의해 잘못된 평가가 진행되고 있습니다.

<title>Home &ndash; dragarch</title> 

/Applications/MAMP/htdocs 

    <link rel="stylesheet" type="text/css" href="../style.css"> 
    <link rel="shortcut icon" type="image/svg+xml" href="../favicon.svg" /> 

: 파일 index.shtml의 출력 여기

<title><!--#echo var="page" --> &ndash; <!--#echo var="HTTP_HOST" --></title> 
<!--#set var="docroot" value="${DOCUMENT_ROOT}" --> 
<!--#echo var="docroot" --> 
<!--#if expr="($docroot != '/Applications/MAMP/htdocs') || ($docroot != '/home/dragarch/public_html')" --> 
    <link rel="stylesheet" type="text/css" href="../style.css"> 
    <link rel="shortcut icon" type="image/svg+xml" href="../favicon.svg" /> 
<!--#else --> 
    <link rel="stylesheet" type="text/css" href="style.css"> 
    <link rel="shortcut icon" type="image/svg+xml" href="favicon.svg" /> 
<!--#endif --> 

그리고 것 : 파일 headlinks.shtml의 코드 여기

<head> 
    <!--#set var="page" value="Home" --> 
    <!--#include file="headlinks.shtml" --> 
    <style> 
     img#ref { float: right; margin-left: 8px; border-width: 0px; } 
    </style> 
</head> 

것 : 여기

파일 index.shtml의 코드입니다 style.cssfavicon.svgindex.shtml과 함께 문서 루트에 있으므로 if 지시문은 실패하고 else 지시문의 출력이 기본값이어야합니다. 보시다시피, 문서 루트 (현재 내 노트의 MAMP htdocs 폴더)는 echo 지시문의 출력에 따라 정확하지만 if-else 지시문의 비교는 문자열을 제대로 비교하지 못합니다.

내 문서이 페이지를 사용하고 있습니다 : http://httpd.apache.org/docs/2.2/mod/mod_include.html

나는이 경우 이유에 완전한 손실에있어, 여기에 약간의 도움이 필요합니다.

편집 : 내가 dragarch 내가 그래서 localhost를 사용하지 않고 사이트를 테스트 할 수 127.0.0.1을 가리 키도록 /etc/hosts 구성된 호스트 있음을 알아 두셔야합니다. 사용하기에 더 예쁜 호스트 이름처럼 행동하는 것 이외에는 어떤 기능에도 실제 효과가 없습니다.

답변

0

간단한 확인 : if 문을 다른 조건문 앞에 두 조건으로 나누어보십시오. 어느 것이 사실이라고 잘못 평가되고 있는지 확인하십시오. 두 조건이 모두 같으면 조건을 평가하는 방법을 다시 확인해야합니다. 아마도 그들은 expr = statement로 인해 모두 돌아 오는 것일까? 나는 ssi에 관한 헛소리를 모른다. 그러나 나는 몇몇 언어에서 var_name =이 항상 true이고, ==가 비교라는 것을 알고있다.

+0

expr =은 if 지시문의 구문 일부입니다. expr = 뒤에 나오는 따옴표 안에있는 모든 것이 테스트되는 조건입니다. –

+0

입력 및 그 결과로 나타나는 주저에 감사드립니다. :) 그냥 xor 식으로 바꾸면됩니다. –

+0

오신 것을 환영합니다! 저는 매주 일반 엔지니어링 C 프로그래밍 과정에 학생들을 적극적으로지도하고 있습니다. 그래서 제가 도움을 얻을 수있는 기회에 자연스럽게 뛰어 들었습니다. 여러분 모두가 여러분의 코드를 다시 생각하게 만들었지 만, –