2013-04-24 2 views
0

나는 뒤죽박죽입니다. require.once를 사용하여 index.php 페이지 맨 위에 포함 된 SQL 로그인 정보 (호스트 이름, 데이터베이스, 사용자 이름, 비밀번호)가 포함 된 login.php 페이지가 있습니다. 로그인 정보는 원격 서버 또는 로컬 테스트 서버에 있는지 그리고 올바른 로그인 정보를 제공하는지 여부를 결정하는 조건문 내에 있습니다. 이제 이것이 이상한 곳으로, 원격 서버의 index.php 페이지로 직접 가면 테스트 서버에서 작동하지만 (데이터베이스와 연결되지 않은 것처럼) 작동하지 않습니다. 원격 서버의 login.php 사이트를 먼저 방문 (아무 것도 울리지 않음) 한 다음 원격 서버의 index.php 페이지를 방문하면 작동합니다. 캐시가 사용 중지되었습니다. 왜 이런 일이 일어나고 어떻게 해결할 수 있습니까? 먼저 http://distantfuturejosh.com/playground/pendingaxioms을 방문하여 작동 해보십시오 (작동하지 않음). http://distantfuturejosh.com/playground/pendingaxioms/login.php (빈 페이지가 제공됨)을 방문한 다음 http://distantfuturejosh.com/playground/pendingaxioms으로 돌아갑니다 (작동하고 이미지가 표시됨).SQL 로그인은 로그인 페이지를 방문한 후에 만 ​​작동합니다.

<?php 

    $requesturi = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 
    $pos = strpos($requesturi, "www.distantfuturejosh.com"); 

    if ($pos === 0) 
    { 
     $db_hostname = "xxxxxxxx"; 
     $db_database = "xxxxxxxx"; 
     $db_username = "xxxxxxxx"; 
     $db_password = "xxxxxxxx"; 
    } 
    else 
    { 
     $db_hostname = "localhost"; 
     $db_database = "xxxxxxxx"; 
     $db_username = "root"; 
     $db_password = "root"; 
    } 

?> 
+0

홈페이지와 다른 PHP 페이지에 login.php을 사용자 로그인을 확인하고 포함 생각하지만, 그것은 영구적 인 상태 일 수 있습니다. '$ requesturi'와'$ pos'의 값을 반향하여 그들이 기대 한 바가 있는지보십시오. – jpmc26

+0

PHP 스크립트가 실행될 때마다 새 데이터베이스 연결을 만들어야한다는 점에 유의하십시오. –

답변

1

파일의 시작 부분에

session_start(); 

를 사용해보십시오 : 여기

는 login.php 페이지입니다.

+0

로그인 파일의 시작 부분에'session_start();'을 추가했지만 (물론' wetjosh

+0

이 $ pos = strpos ($ requesturi, "www.distantfuturejosh.com") 뒤에 $ pos의 값을 출력하면됩니다. –

+0

당신은 무엇을, 전에 그것을 시도했는지, 잘 대신 에코를 사용하고 그것을 고칠 수 있습니다. 조건문에 변수를 사용하려면 변수를 반향시켜야하는 이유는 무엇입니까? 그리고 이제는 내 페이지 상단에 못생긴 "0"이 있습니다. – wetjosh

0

하는 if ($pos === false)를 사용해보십시오 대신이

<?php 

    $requesturi = $_SERVER['HTTP_HOST']; 
    $pos = strpos($requesturi, "distantfuturejosh"); 

    if ($pos === false) 
    { //local 
     $db_hostname = "localhost"; 
     $db_database = "xxxxxxxx"; 
     $db_username = "root"; 
     $db_password = "root"; 
    } 
    else 
    { //remote 
     $db_hostname = "xxxxxxxx"; 
     $db_database = "xxxxxxxx"; 
     $db_username = "xxxxxxxx"; 
     $db_password = "xxxxxxxx"; 
    } 

?> 

같은 if ($pos === 0) 내가 먼저 방문 할 때 나를 위해 잘 작동 당신이 include /subfolder/login.php;

+0

원격 작동, 로컬하지 않습니다. – wetjosh

+0

로컬에서 실행하면 'else' 문으로 넘어 가지 않거나 거기에 있지만 로컬 호스트 데이터베이스에 연결할 수 없습니까? – Amir

+0

http : // localhost/pendingaxioms 페이지를 방문하면 로드하지만 이미지가 없습니다. 자격 증명이 잘못되어 데이터베이스에 연결하지 않았기 때문에 가정합니다. if 문을 삭제하고 로컬 서버에 대한 자격 증명을 사용하면 로컬에서 제대로 작동하지만, 여러분이 login.php 페이지를 처음 방문하면 처음에는 제대로 작동합니까? 여전히 그 이유를 알고 싶습니다. – wetjosh

관련 문제