2012-12-23 4 views
1

나는이라는 사용자가 제출 한 게시물 (해당 ID로 정의 됨)을 가지고 있습니다 (예 : q.php?id=1$id 변수를 사용하여 나머지 모든 항목을 가져 오는 특정 게시물이됩니다). 데이터베이스의 정보).PHP에서 URL에 변수가 포함 된 페이지로 리디렉션

동일한 페이지에 의견 제출을 코딩하고 사용자가 입력란에 아무 것도 입력하지 않을 수도 있다는 사실을 설명하려고합니다. 이 경우 페이지 (예 : q.php?id=1)에 오류 메시지가 다시 표시되기를 원합니다.

양식이 활성화되는 PHP 파일에 의해 값이 주어진 빈 변수를 사용하여 오류 메시지를 표시 할 수 있습니다. 그러나 특정 게시물로 다시 이동하는 데 문제가 있습니다. 나는 $ id가 숫자로 설정된 include('q.php?id=$id)을 사용하려고 시도했으나 이것이 목적이 아니며 변수를 받아 들일 수 없다는 것을 이해했습니다.

대신 무엇을 사용해야합니까?

편집

answer.php (양식이 활성화 파일) :

require 'q.php'; 
$_GET['id'] = $id; 
$_SESSION['error'] = "Please fill in all of the fields."; 

q.php :

if ($_SESSION['error'] !== 0) { 
    echo "<p style='color: #AA1111;'>".$_SESSION['error']."</a>"; 
    unset($_SESSION['error']); // this isn't happening... 
} 

답변

5

당신이 정말로 당신이 페이지 인라인을 포함해야하는 경우 $_GET을 수정할 수 있습니다.

$_GET['id'] = $id; 
require 'q.php'; 

하지만 세션 변수 또는 리디렉션으로 수행 할 수있는 것처럼 오류 메시지가 들립니다.

header('Location: q.php?id=' . $id . '&error=The+error'); 
exit(); 

그런 다음, 당신이 q.php$_GET['error'] 확인 : 리디렉션은 같은 것을 볼 수 있었다. 세션 변수를 사용하면 쿼리 루프 매개 변수로 error을 추가하는 대신에 $_SESSION['error']unset을 즉시 사용합니다.

+0

감사합니다. 이것은 거의 완벽합니다. 난 그냥 세션 변수를 unsetting하는 데 문제가 있습니다. 내가 어디에서해야하니? – Sebastian

+0

@Sebastian :'q.php'에서 읽어들이 자마자. – Ryan

+0

나는 그것을 시도하고 그것은 작동하지 않았다. 코드 \t이 설정되어 있지 않습니다 ($ _ SESSION [ 'error']); ? – Sebastian

1

당신은 header("Location: q.php?id=$id"); exit;를 사용할 수 있지만 오류 메시지를 보낼 수있는 다른 방법을 필요 (예 : $_SESSION에 저장)

당신은 당신이 그것을 원하는 방법 $_GET 배열을 설정할 수 있습니다 -이 경우 , $_GET = Array("id"=>$id); 다음에 include("q.php"). 이것은 일반적으로 잘 보이지 않지만 include_once을 올바르게 사용하지 않으면 문제가 발생할 수 있습니다.

관련 문제