2011-11-26 2 views
1

또 다른 문제가 있습니다. PHP 파일에서 다른 변수를 참조해야하는 변수가 생겼으나 성공하지 못했습니다. 여기다른 PHP 파일의 변수를 어떻게 참조 할 수 있습니까?

if (isset($_REQUEST['login']) && isset($_REQUEST['password'])) 
    establishingConnection($_REQUEST['login'], $_REQUEST['password'], $xml); 

, 나는 내가 개발하고 있어요 웹 서비스와의 연결을 설정하기 위해 사용자 이름과 암호를 제출해야합니다 :

추가 설명은, 내가 PHP 파일에이 세그먼트를 가지고있다.

그 후 사용자는 링크/태그 추가/변경/변경 등과 같은 작업을 할 수 있습니다. 사용자는 자신의 개인 데이터 (사용자 이름, 비밀번호, 이메일 또는 자신의 계정 삭제)를 변경할 수 있습니다. 이러한 작업 중 현재 로그인 (즉, 사용자 이름)이 필요합니다. 이 예와 같이 :

if (isset($_SESSION['login'])) 
{ 
    if (isset($_REQUEST['password']) && isset($_REQUEST['newUsername'])) 
     changeUsername($_SESSION['login'], $_REQUEST['password'], $_REQUEST['newUsername'], $xml); 
    else { 
     $msg = 'Some fields are missing'; 
     message($xml, $msg, 1); 
    } 
} 
else 
{ 
    $msg = 'Please login first!'; 
    message($xml, $msg, 1); 
} 

불행히도 로그인 데이터를 올바르게 가져올 수 없습니다. 이 메시지를보고이 문제를 볼 수 있습니다 :

$msg = 'Some fields are missing'; 

내 주요 목적은 다른 파일에서 PHP 변수를 참조하는 것입니다. 내 JavaScript 파일은 로그인 사용자 이름을 제공 할 책임이 없습니다. 나는 PHP 파일을 포함하려했지만 성공하지 못했습니다.

이 문제를 해결하기위한 제안이 있으십니까?

편집 : 글쎄, 내 PHP를 시도했지만 내 JavaScript 스크립트에서 몇 가지 문제를 알아 냈어.

문제점이있는 단서가 없으므로이 작업을 담당하는 기능을 게시 할 것입니다.

HTML :

 <div id="changeUserid"> 
      <form id="changeUseridForm"> 
       New username: <input type="text" id="newUserid" /> 
       <br> 
       Type your password to validate your action: <input type="password" id="retypePass" /> 
       <br> 
       <input type="submit" value="Change" /> 
      </form> 
     </div> 

내 자바 스크립트 (jQuery를) 함수 :

$("#changeUseridForm").submit(function(){ 
     $.ajax({ 
      type: "GET", 
      url: "API/root/users/changeUsername.php", 
      data: { 
      newUsername: $("#newUserid", this).val(), 
      password: $("#retypePass", this).val(), 
      xml: 1, 
      }, 
      dataType: 'xml', 
      success: function(xml){ 
       if($(xml).find("success").length > 0){ 
        alert("Username changed successfully!"); 
        window.location.reload(); 
       } 
       else if($(xml).find("error").length > 0){ 
        alert("You have to fill all the fields!"); 
       } 
      } 
     }); 

     return false; 
    }); 

EDIT2 : 사용자 이름 변경에 내 문제가 해결된다. 이제는 성공한 이전 사용자 이름으로 로그인 할 수있는 문제가 있습니다. 어떠한 제안?

+6

더 많은 중괄호로 시작해야합니다.이 코드는 중단되어야합니다. 가까운 미래에. – Jacco

+0

그리고 들여 쓰기를 수정하십시오 –

+0

코드를 읽기가 어려우면서 서식이 잘못되었습니다 – robert

답변

0

나는 완전히 당신의 문제를 이해하고 있는지 모르겠다. 같은 파일이나 별도의 코드 세그먼트가 둘 다 있나? 그리고 당신은 두 개의 다른 HTML 양식을 제출합니까 아니면 하나의 양식입니까?

HTML 양식을 한 페이지에 제출 한 다음 다른 페이지로 이동할 때 같은 값에 액세스하려고한다고 가정합니다. 한 페이지에서 $ _REQUEST 값을 이와 같이 다른 페이지로 전달할 수 없습니다. 당신은 몇 가지 변수에이 값을 할당 한 다음 해당 파일을 포함, 또는 이러한 파일 저장하는 세션 변수를 사용할 수 있습니다 :

이 첫 번째 파일에서이 작업을 수행합니다 : 다음

$password = $_REQUEST['password']; 
$newUsername = $_REQUEST['newUsername']; 

이, 두 번째에서 첫 번째 파일을 포함을 및 변수를 사용하여 (첫 번째 파일을 가정하는 것은 a.php에있다) : 또한, 단지 확인 다른 한 페이지에서 데이터를 전달하는 세션 변수를 사용할 수 있습니다

include "a.php"; 
if (isset($_SESSION['login'])){ 
    if (isset($password) && isset($newUsername)){ 
     changeUsername($_SESSION['login'], $password, $newUsername, $xml); 
    } else { 
     $msg = 'Some fields are missing'; 
     message($xml, $msg, 1); 
    } 
} 

사용 모든 페이지의 시작에 session_start()있다 on 세션 변수.

참고 : 사용자 제출 데이터를 사용하기 전에 유효성을 검사해야하지만 다른 주제입니다. 또한 의심 스러우면 변수를 인쇄/에코하여 어떤 데이터가 전달되고 어떤 변수가 문제인지 확인하십시오.

EDIT (질문 2) : 새 사용자 이름과 이전 사용자 이름으로 로그인 할 수 있습니까? 그렇다면 새 사용자의 currenct 사용자 이름을 바꾸는 대신 새 사용자 (이름)를 추가하는 것입니다. 계정 정보를 업데이트하는 방법을 공유하십시오 (즉, 데이터베이스를 사용하고 있고 사용중인 업데이트 쿼리를 공유하는 경우) 누군가가 도움을 줄 수 있습니다.

+0

첫 번째 코드 세그먼트가 두 번째 조각과 동일한 파일에 없습니다. 좋아, 내가 포함 시키려고했지만 모든 스크립트를 실행할 때마다 데이터베이스에 연결하려고하기 때문에 치명적인 오류를 반환합니다. 나는 주석을 달았지만 동일한 문제가있는 결과를 반환한다. –

+0

PHP 파일을 포함 할 때마다 클래스의 모든 코드가 실행되고 (클래스의 함수 및 코드 제외) 변수를 가져 오는 파일을 포함하는 것이 일반적으로 좋지 않습니다. 세션을 사용해보십시오. –

+0

마찬가지로,'session_start()'를 만드시겠습니까? 그러나 나는 이미 대본이 시작될 때 그것을합니다. 그 후, 세션을 실행하기 위해 함수를 만들었습니다. –

0

문제는 Session_start()와 관련이 있다고 생각합니다. 세션 로그인 및 암호 변수를 확인하기 전에 포함되어 있는지 확인하십시오.

관련 문제