2016-12-06 1 views
-1

어제 제가 라이브 서버에 최근에 업로드 한 로그인 페이지에서 발생한 문제에 대해 질문을 올렸습니다. 기본적으로 페이지는 다시로드 중이며 아무것도 수행하지 않았습니다. 질문 참조를 위해 여기에 있습니다 :if 문에서 PHP isset이 작동하지 않습니다.

Login script not working on live server

영원히 문제를 알아 내려고처럼 보이는, 내가 이것을 파악하기 위해에는 isset없이 PHP를 실행하는 다른 페이지로 양식을 보내야만 후, 그리고 그것은 잘 작동합니다. 문제의 원인을 찾았지만 그 이유를 이해하지 못합니다.

필요없는 경우 내 코드를 모두 isset에서 다른 것으로 변경하고 싶지 않습니다 ... 다른 버전의 PHP 일 수 있습니까? 내 로컬 호스트가 5.6.15이고 라이브 서버가 5.6.13인데, 그렇게 차이를 만들지는 못했을 것입니다. ...

<?php 
session_start(); 
$page_title = "Love Deals Login"; 
require('../inc/connect/config.php'); 
if($user->is_loggedin()!="") { 
    header("Location: index.php"); 
} 

if(isset($_POST['login'])) { 
    $uname = $_POST['txt_uname']; 
    $upass = $_POST['txt_upass']; 

    if($user->login($uname,$upass)) { 
     header("Location: index.php"); 
    } else { 
     $error = "Login failed. Please try again, or register"; 
    } 
} 

include('inc/admin-header.php'); 
?> 
<div class="container" style="padding: 100px 0 0 0;"> 
<div class="form-container"> 
    <form method="post" id="login" action="form-test.php"> 
     <h3>Please login</h3> 
     <?php if(isset($error)) { ?> 
      <div class="alert alert-danger"> 
       <i class="glyphicon glyphicon-warning-sign"></i> &nbsp; <?php echo $error; ?> 
      </div> 
     <?php } else if(isset($_GET['joined'])) { ?> 
       <div class="alert alert-info"> 
        <i class="glyphicon glyphicon-ok"></i> &nbsp; Thanks! You are now registered. You may now login below 
       </div> 
     <?php } else if(isset($_GET['pass-update'])) { ?> 
       <div class="alert alert-info"> 
        <i class="glyphicon glyphicon-ok"></i> &nbsp; Success! Your password has been updated. You may now login below 
       </div> 
     <?php } ?> 
     <div class="form-group col-xs-12 col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 login"> 
      <input type="text" class="form-control" name="txt_uname" placeholder="Username" required /> 
     </div> 
     <div class="form-group col-xs-12 col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 login"> 
      <input type="password" class="form-control" name="txt_upass" placeholder="Password" required /> 
     </div> 
     <div class="clearfix"></div> 
     <div class="form-group col-xs-12 col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 login"> 
      <p class="small text">Forgotten <a href="forgot-user.php">Username</a>/<a href="forgot-pass.php">Password?</a></p> 
      <button type="submit" name="login" class="btn btn-primary pull-right"> 
       <i class="glyphicon glyphicon-log-in"></i>&nbsp;Login</button> 
     </div> 
     <div class="col-xs-12 col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3" style="text-align: center;"> 
      <label>Don't have an account yet? <a href="agree.php">Register now</a></label> 
     </div> 
    </form> 
</div> 
</div> 
<?php include('inc/admin-footer.php'); ?> 

모든 코드는 이전 질문에 포함되어 로컬 호스트에 있지만 라이브 서버에서 작동 : 여기에 참고로

코드 (그것은 또한 앞의 질문에 포함)입니다. 또한 !empty&& !empty을 시도했지만 아무런 효과가 없었지만 isset 문이없는 별도의 파일에서 작동합니다.

+0

항상 그렇듯 : 질문에 코드의 관련 부분을 추가해야합니다. 그밖에 우리가 어떻게 대답하기를 기대합니까? – arkascha

+0

그럼 뭐가 잘못 되었나요? 나는 다른 질문에서 이상한 것을 보았다. –

+0

의도대로 내 localhost에서 작동하며, ifetset없이 스크립트를 실행하기 위해 다른 파일로 양식을 보내면 작동하며, 로그인하고 index.php로 리디렉션됩니다 ... isset ? –

답변

0

ok ... isset에서 PHP 설명서를 읽은 후 var_dump 등을 실행 한 후 문제가 무엇인지 발견했습니다. $ _POST [ 'login']에서 false를 반환하고 있습니다. 이 버튼이 아닌 입력되고, 같은 스크립트를 실행 이에

if(isset($_POST['login'])) 

을 변경 :

if(isset($_POST['txt_uname'], $_POST['txt_upass'])) 

과는 정상적으로 작동합니다.

+0

과 같이 정의 된 버튼이있는 경우 isset ($ _ POST [ 'login'])가 작동해야합니다. 기본적으로 이름과 어떤 종류의 값 . 할당 된 값이 없으면 브라우저는 "제출"의 명백한 값 (게시물에서는 전송되지 않음)으로 렌더링합니다. – ivanivan

관련 문제