2013-06-28 6 views
0

이 문제로 도와주세요. 나는 스크립트를 가지고 관리자 영역에 대해 다음과 같은 코드로 파일 "login.php"을 요청 : 나는 내 작은 지식을 이해하고, PHP는 5.3.x에서이되지 않습니다으로 검색으로

<? 
if($_COOKIE["ok"]==1){ 
    setcookie("user",$_REQUEST["name_theuser"]); 
    setcookie("tipe",$_REQUEST["thetipe"]); 
}else{ 
    echo "<script>document.location.href='disconnect.php';</script>"; 
} 
echo "<script>document.location.href='bord.php';</script>"; 

?> 

증상은 올바른 사용자 및 암호로 로그인하지 않으면 올바르게 리디렉션되지 않습니다.

누구나 손을 댈 수 있다면 많은 도움이 될 것입니다.

감사합니다.

+1

둘 다 사용되지 않지만 두 가지 모두 인증과 관련한 나쁜 아이디어입니다. 이러한 종류의 인증은 인증과 같습니다. 어쨌든'리디렉션을 위해 JavaScript에 의존하지 않기 위해'Location' 헤더를 사용하는 것이 어떻습니까? – Ryan

+0

오류 메시지가 있습니까? error.log를 보셨습니까? – sectus

답변

-1

JavaScript가 리디렉션이 잘못되었습니다. document.locationwindow.location이어야합니다. $_REQUEST은 가치가 있지만, 올바르게 사용하고 있는지 확인해야합니다. 양식을 제출하는 중이면 제출 버튼이 설정되어 있는지 테스트하십시오. 당신은 더 안전하다는 $_POST 방법을 사용하는 경우 정말 코드가 더 다음과 같아야합니다

<?php 
session_start(); 
if(isset($_POST['submitButton']) && isset($_COOKIE['ok']) && $_COOKIE['ok'] === '1'){ 
    setcookie('user', $_POST['name_theuser']); 
    setcookie('tipe', $_POST['thetipe']); 
    //send a header or do your thing here 
} 
else{ 
    header('LOCATION:disconnect.php'); die(); 
} 
?> 

나는 또한 당신의 하단에 상관없이 무엇을, 리디렉션을하려고하지 않은 이유 불분명 귀하의 페이지.

사이드 참고 :

당신은 window.location.href =를 사용할 필요가 없습니다. 실제로 window.location =을 바로 가기로 사용할 수 있습니다. 더 짧지 만 window이 암시 적이기 때문에 실제로는 location =을 사용할 수 있습니다.

+0

주어진 모든 도움과 지원에 감사드립니다. –

+0

이 답변은 100 % 정확하지 않기 때문에 -1을주었습니다. 'window.location.href'는 정확합니다. 실수로 출력되는 것을 방지하기 위해 출력 버퍼링을 사용하면 (경고가 예상됩니까?) 기껏해야 _smelly_입니다. Location 헤더는 비표준 (그러나 허용됨) 인 대문자입니다. 스크립트 리다이렉트는 헤더 리다이렉트와 같지 않다. 헤더 리다이렉트는 아마도 여기에 원하는 것이 겠지만, 그에 상응하지는 않는다.'$ _REQUEST'의 본질에 대한 설명이 불충분합니다. – Halcyon

+0

감사합니다. 때로는 내 대답이 얼마나 부적절한지를 잊어 버리는 경우도 있습니다. 완벽은 항상 중요합니다. – PHPglue

0

setcookie$_REQUEST아니요,입니다. 확인 : http://php.net/manual/en/migration53.deprecated.php

서버 구성에 따라 $_REQUEST을 사용할 수 없을 수도 있습니다. 이는 아마도 여기에서 진행될 것입니다. $_REQUEST이 나쁜 것으로 인식되기 때문에이 또한 기본 설정입니다.

$_REQUEST$_GET$_POST의 결합 된 입력입니다. 해결 방법은 올바른 것으로 교체하는 것입니다.

양식이 action="post" 인 경우 양식 입력은 $_POST입니다. mysite/login.php?name_theuser=john&thetipe=foo과 같은 URL을 방문하는 경우 입력하신 내용은 $_GET입니다.

+0

답변을 주셔서 감사합니다. 나는 그 밑바탕을 갖기 위해 노력할 것입니다. 예를 들어 "mysite/login.php? name_theuser = john & thetipe = foo"와 같습니다. 내 코드 지식은 아주 작습니다. 다시 감사합니다! –