2013-02-28 3 views
0

Я протестировал следующий скрипт локально на своей машине, и все работает отлично, как я этого хочу. Однако, когда я загружаю свои файлы на свой сервер в 1 и 1, на скрипте входа в систему, когда я нажимаю кнопку «отправить», он просто остается на экране входа в систему.Мой PHP работает локально, но не на сервере 1and1

Я также не уверен, но имеет в виду, что проблема связана не с сеансами, а с использованием моей функции заголовка.

<?php 
    session_start(); 
    require ("login.php"); 
    include ("header.php"); 
    include ("subnav.php"); 

    if ((isset($_SESSION['user'])) && (isset($_SESSION['admin']))) 
     header('Location: admin/index.php'); 

    if ((isset($_SESSION['user'])) && (!isset($_SESSION['admin']))) 
     header('Location: customer/index.php'); 

    if ((isset($_GET['logout'])) == 1) { 
     session_destroy(); 
     header('Location: index.php'); 
    } 

    if (isset($_POST['submit'])) 
     if($_POST['username'] == 'jay') { 
      $_SESSION['user'] = 'jay'; 
      $_SESSION['admin'] = 1; 
      header('Location: admin/index.php'); 
     } 
     else if ($_POST['username'] == 'william'){ 
      $_SESSION['user'] = 'william'; 
      header('Location: customer/index.php'); 
     } 
     else { 
      header('Location: http://www.google.com'); 
     } 
?> 

    <h2>System Log-In</h2> 

    <form action="" method="post"> 
     <ul id="login"> 
      <li> 
       Username: <br> 
       <input type="text" name="username"></li> 
      <li> 
       Password: <br> 
       <input type="password" name="password"> 
      </li> 
      <li> 
       <input type="submit" value="Log-In" name ="submit" id="submit"> 
      </li> 
      <li> 
       <br><a href=#>Register Here.</a> 
      </li> 
      <li> 
       If you are having problems with the log-in process, please send us an <a href="mailto:[email protected]">e-mail</a>. 
      </li> 
     </ul> 
    </form> 


<?php 
    include ("footer.php"); 
?> 

enter image description here

+0

Может быть сессия отключена. 'session_start' возвращает логическое значение, вы должны проверить, что boolean должен знать, успешно ли сеанс или нет. Из документации: Эта функция возвращает TRUE, если сеанс был успешно запущен, иначе FALSE – MatRt

ответ

1

в фигурные скобки в этот момент в коде, чтобы правильно заполнить блок кода:

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

В общем, лучше всегда использовать фигурные скобки для всех, если заявления, даже если они одна линия. Это помогает предотвратить подобные проблемы.

+0

Это не помогло, к сожалению. – JimRomeFan

+0

Еще одна вещь, которую нужно сделать, - добавить выражения эха в выражениях if, чтобы вы могли определить, к какому пути следуют. Это поможет в устранении неполадок. Как только вы узнаете, где происходит неправильный путь, вы можете сосредоточиться на значении этих ключевых переменных. – Marshmellow1328

+0

Я разместил эхо прямо перед строкой заголовка («Место ....»), а эхо-сообщение распечатано, но из-за coursse, переадресация браузера не произошла – JimRomeFan

0

Это может или не может помочь, но есть несколько вещей, которые вы должны получить в порядке:

  1. При использовании заголовка Location: вы должны всегда оканчиваются скрипт, используя die() , В противном случае остальная часть скрипта будет продолжать работать: header('Location: ...'); die;

  2. Также, связанный с заголовком Location:, вы действительно должны поставить переднюю косую черту впереди пути. Например. Location: /index.php.

  3. Надеюсь, код предназначен для практики. Предоставление статуса администратора пользователя просто на основе значения переменной POST не совсем безопасно.

+0

Нет, это просто для тестирования - значения будут получены из базы данных. – JimRomeFan

+0

Ни один из этих исправлений не работал. – JimRomeFan

Смежные вопросы