2010-04-12 6 views
2

비밀번호를 잘못 입력하면 로그인이있는 많은 웹 사이트에서 사용자 이름 필드에 사용자 이름이 어떻게 유지됩니까? 폼의 동작 (index.php에 있음)은 또 다른 PHP 파일입니다. 패스워드가 올바르지 않으면 Header()를 사용하여 인덱스로 돌아가 GET을 사용하여 오류를 전달합니다. GET을 사용하여 사용자 이름을 양식에 다시 전달할 수는 있지만 어수선하게 보입니다. SMF 포럼과 같은 웹 사이트에서는 사용자 이름 필드에 지저분한 URL이 없어도 사용자 이름을 유지할 수 있습니다.잘못된 비밀번호 인 경우 사용자 이름 입력란에 비밀번호를 입력하십시오.

+0

PHP가 $ _POST를 다음과 같이 사용할 수없는 이유는 무엇입니까? $ _POST [ 'username'] = "Joe Blogs"; 그것은 분명하고 쉽게 것들을 만들 것 같습니다. –

+0

SMF 포럼에 예제 코드/URL을 줄 수 있습니까? 나는 그들이 항상 폼 값에 접근 할 수있는 동일한 index.php 페이지에 게시하는 것을 본다. – zaf

답변

1

세션을 사용할 수 있습니다. 게시물이 잘못된 경우

예를 들어, (이 게시물 요청을 처리하는 파일에 갈 것) : 다음

$_SESSION['username'] = $_POST['username'];

를 로그인 페이지 :

<input type="text" name="username" value="<?php echo @$_SESSION['username']; ?>" />

만들기 그래도 세션을 시작할 수 있습니다. http://php.net/session_start

+0

일반적으로 이러한 종류의 목적으로 세션을 사용하는 것은 권장하지 않습니다. 사용자가 여러 탭을 열었을 때 중단되는 사이트로 끝납니다. –

+0

세션은 탭/창에 걸쳐 실행됩니다. 양식이 자체에 게시되면 양식을 다루는 것이 더 쉽다는 것에 동의하지만 이것이 항상 그런 것은 아닙니다. 세션이 아니라면 유효성 검사 실패시 다른 페이지에서 사용자 데이터를 어떻게 전송합니까? (데이터가 표시된 후에 요청간에 세션 데이터를 비우는 데주의해야 함) –

+0

현재 컨텍스트에서 어떤 문제도 생각할 수 없습니다. 저는 양식을 대체하는 일반적인 방법으로 세션을 사용하는 정책에 대해 경고합니다 (예약 사이트와 같은 일부 분야에서는 매우 인기있는 기술 임). –

3

일반적으로 양식이 표시된 동일한 스크립트에서 양식 데이터를 처리하고 올바른 입력을 수집 한 경우에만 다른 곳으로 리디렉션하는 것이 더 쉽습니다.

0
GET 방법,
header("Location: loginpage.php?username=".$_REQUEST['username']); 

및 양식 페이지에서 유는 좋아에 액세스 할 수 있습니다

<input type="text" name="username" value=<?php echo $_GET['username']?> 
+0

XSS 및 SQL 인젝션 공격에 노출되어있어 매우 좋지 않습니다. –

+0

질문에서 인용 : "사용자 이름을 양식에 다시 전달하기 위해 GET을 사용할 수는 있지만 이상하게 보입니다." –

+0

SQl 주사를 어떻게 열어 주시겠습니까? 아무것도 데이터베이스에 제출하지 않으십니까? –

2

단일체를!

<form action="loginpage.php" method="post"> 
    <fieldset> 
    ... 
    <input type="text" name="username" value="<?php if (isset($_POST['username'])) echo $_POST['username']; ?>" /> 
    ... 
    </fieldset> 
</form> 

나머지는 해결책을 강조하기 위해 생략 된 형식의 나머지 부분입니다.

+0

하지만 login.php에서 POST 변수에 사용자 이름을 어떻게 얻을 수 있습니까? –

+0

@Jonathan 그것이 login.php에 양식을 삽입하는 이유입니다. –

관련 문제