html에서 form 및 체크 구문...

조회수 1353회

20년 전쯤에 배포된 홈페이지 게시판 기능 관련을 뜯어보고 있어요...

너무 오래되어 만든 분도 연락이 안 닿고 코딩은 전혀 몰라서 도와주실 분이 필요합니다.

원래는 form 으로 관리자가 따로 설정한 비밀번호를 입력하면 페이지가 보이는 형식입니다. 그런데 지금은 비밀번호를 아무리 입력해도 페이지가 열리지 않아요.

웹페이지/admin.php?member=1 에서만 머무는데 어디가 잘못된 건지 모르겠습니다.

내용 중에서 이거다 싶은 걸 가져와 봤어요.

// 비공개 게시판 모드 비밀번호 체크

if($memberpasswd === $cfg_member_passwd)
{
  setcookie ("memberlogin",$memberpasswd,0);
  $isMember = 1;
}
else $isMember = 0;

//

form name="member" method="post" action="admin.php?member=1"

//

if($member == 1 && $isMember == 0){
  member_login();
}
else if($isAdmin == 1 || $logout=="on" || $isMember == 1){
    echo("
    <html>
    <head>
    <title>Load 게시판</title>
    <meta http-equiv='refresh' content='0; url=./index.php'>
    </head></html>
    ");

2 답변

  • 잘은 모르겠는데 20년전에 만들어진 소스라면...

    <form action="admin.php?member=1">
    

    이거를 이렇게 바꿔보세요. ↓

    <form action="/admin.php?member=1">
    

    그래도 안되면.. 전체적인 소스를 올려주세요. 폼이 있는 파일 php, admin.php 2개 파일 소스는 있어야 할거 같고 꼭 가려야 하는 내용 아니면 가급적 그대로 올려주시는 게 좋습니다.

    • 안녕하세요! 일주일 만에 댓글을 다네요. 일단 알려주신 대로 수정을 해도 먹히지가 않았습니다. 확인해 보니 툴 자체는 20년 전에 만들어진 거고, 10년 전에 첫 수정본, 그리고 올해 새 수정본이 나온 모양인데 (전부 다른 분이 코딩했네요!) 올해 수정본 작업자분께 연락드려도 연락이 되지 않네요. 실례가 되지 않는다면 이 소스를 확인 부탁드려도 될까요? (문제가 생기는 페이지 (내용 삭제) 알 수 없는 사용자 2020.8.28 12:58
    • 지금 봤는데 진짜 갑갑하게 만들어 놨네요. 왜 안 되는지는 대략 알겠고 고치자면 이 MMB라는걸 다뜯어고쳐야할수도 있을거 같습니다. 엽토군 2020.8.28 13:09
  • 사이트 들어가서 소스를 받아 까봤습니다. admin.php의 이걸

    <form name="member" method="post" action="admin.php?member=1">
    

    이렇게 고치시면 일단 작동할 겁니다.

    <form name="member" method="get" action="admin.php?member=1">
    

    원인이 뭐냐면... 이 프레임워크가 GET 변수와 POST 변수 모두 주어진 요청에 대해서는 GET 변수 입력만 받고 POST 입력값을 무시합니다. 그래서 memberpasswd 입력값이 애초에 처리되질 않는 겁니다.

    // env.php 일부
    
    if(sizeof($_GET)) { $result = $_GET; $result_gp = "g"; }
    else { $result = $_POST; $result_gp = "p"; } // 이 라인은 $_GET 배열이 비어 있지 않은 한 절대 실행되지 않음
    
    reset($result);
    while($temp = each($result)) {
      // 따라서 여기는 if 나 else if 둘 중 한쪽만 실행되는 멍청한 구간
      if($result_gp == "g") {
        $$temp["key"] = $_GET[$temp["key"]];
      }
      else if($result_gp == "p") {
        $$temp["key"] = $_POST[$temp["key"]];
      }
    }
    

    사실은 근본적으로 수정 필요한 버그인데, 뭔가 프레임워크의 라이센스도 까다로워 보이고... 애초에 이런건 돈받고 하든지 기타 책임을 부여받은 상태에서 해야되는 일이기도 하고 해서... 전 여기까지만 참견하겠습니다.

    도움이 되면 좋겠네요. 이런 PHP라서 죄송합니다.

    • 정말 감사합니다! 말씀해주신 대로 변수 하나만 수정했더니 바로 작동하네요. 확실히 라이센스가 걸려 있어서 문제가 되는 소스를 확인 부탁드리기도 어려웠고, 정작 만든 분과는 연락이 전혀 닿지 않아 고민이었습니다. 해결이 되어서 속이 시원하네요. 정말 감사합니다, 좋은 주말 보내시길 바래요! 알 수 없는 사용자 2020.8.28 20:05

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)