2017-01-18 8 views
1

Добрый день, всем, я уже несколько месяцев борюсь с проблемой. У меня есть php-программа, которая отлично работает на локальном хосте, но один из файлов php отказывается работать на веб-сервере .ie. на моем сайте после загрузки. Все остальные php-файлы работали, но файлы register.php отказываются работать на веб-сервере. что может быть причиной. Я делаю что-то неправильно. Прошу прощения.php-файлы работали отлично на локальном хосте, но не на веб-сервере

// register.php code 





<?php 
     include('header.php'); 
     include('navbar_teacher.php'); 
     include 'core/init.php'; 




     logged_in_redirect(); 


     if (empty($_POST) === false) { 

      $required_fields = array('username ','password','password_again','first_name','class','mac','phone_no','email','js1','js2','address'); 
      foreach ($_POST as $key=>$value) { 
       if (empty($value) && in_array($key, $required_fields) === true) { 
       $errors[] = 'Fields marked with an asterisk are required'; 
       break 1; 
       } 
       } 
      if (empty($errors) === true) { 
      if (user_exists($_POST['username']) === true) { 
       $errors[] = 'Sorry, the username \''. $_POST['username'].'\' is already taken.'; 
      } 
      if (preg_match("/\\s/", $_POST['username']) === true) { 
       $errors[] = 'Your username must not contain any space.'; 
      } 
      if (strlen($_POST['password']) < 6) { 
       $errors[] = 'Your password must be at least 6 characters.'; 
      } 
      if ($_POST['password'] !== $_POST['password_again']) { 
       $errors[] = 'Your password do not match.'; 
     } 
     if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)=== false) { 
      $errors[] = 'A valid email address is required'; 
     } 
     if (email_exists($_POST['email']) === true) { 
      $errors[] = 'Sorry, the email \''. $_POST['email'].'\' is already in use.'; 
     } 
      } 
     } 
     ?> 

     <?php 
     if (isset($_GET ['success'])=== true && empty($_GET['success'])=== true) { 
      echo 'You\'ve been registered successfully! Please check your email to activate your account.'; 
     }else { 
     if (empty($_POST) === false && empty($errors) === true) { 
      $register_data =array(
      'username'  => $_POST['username'], 
      'password'  => $_POST['password'], 
      'first_name'  => $_POST['first_name'], 
      'last_name'  => $_POST['last_name'], 
      'class'    => $_POST['class'], 
      'mac'    => $_POST['mac'], 
      'phone_no'    => $_POST['phone_no'], 
      'email'   => $_POST['email'], 

      'address'   => $_POST['address'], 
      'email_code'  =>md5($_POST['username'] + microtime()) 
     ); 
     register_user($register_data); 
     //header('Location: register.php?success'); 
     echo("<script>location.href = 'register.php?success=$msg';</script>"); 
     exit(); 
     } else if (empty($errors) === false) { 
      echo output_errors($errors); 
     } 
     ?> 
     <body id="class_div"> 



     <div class="span8" id="content"> 
          <div class="row-fluid"> 
     <?php include('about.php'); ?> 

     </div> 
       </div> 


     <div class="row-fluid"> 
     <div class="span4"> 
      <?php include 'add_register.php';?>     <!-- block --> 




     </body> 
     </html> 
     <?php 
     } 

     include 'includes/overall/footer.php';?> 

//init.php код

<?php 
    session_start(); 
    //error_reporting(0); 

    require 'database/connect.php'; 
    require 'functions/general.php'; 
    require 'functions/users.php'; 

    $current_file = explode('/', $_SERVER['SCRIPT_NAME']); 
    $current_file = end($current_file); 



    if(logged_in() === true) { 
    $session_user_id = $_SESSION['user_id']; 
    $user_data = user_data($session_user_id, 'user_id','username','password','first_name', 'last_name','class','mac','phone_no','email','address','email_code','active','password_recover','type','allow_email','profile'); 
    if (user_active($user_data['username']) === false) { 
     session_destroy(); 
     //header('Location: index.php'); 
     echo("<script>location.href = 'index.php=$msg';</script>"); 
     exit(); 
    } 
    if ($current_file !== 'changepassword.php' && $user_data['password_recover']== 1) { 
     header('Location: changepassword.php?force'); 
     exit(); 
    } 
    } 
    //echo $user_data['type']; 
    $errors = array(); 

    ?> 






    //users.php code 



<?php 

    function register_user($register_data) { 
    array_walk($register_data, 'array_sanitize'); 

    $register_data['password'] =md5($register_data['password']); 
    $fields = '`' . implode('`, `', array_keys($register_data)) . '`'; 
    $data = '\'' . implode('\', \'', $register_data) . '\''; 

    $db->query(("INSERT INTO `users` ($fields) VALUES ($data)"); 
    email($register_data['email'], 'Activate your account', "Hello " . $register_data ['first_name'] . ",\n\n You need to activate your account, so use the link below:\n\nhttp://ckischools.org/personal/activate.php?email=" . $register_data['email'] . "&email_code=" .$register_data['email_code'] . "\n\n -ckischools "); 

    } 

Все другие файлы PHP работал отлично на сервере, кроме register.php, который имеет связь с init.php и users.php

+0

У вас есть файл .htaccess или файл web.conf в корневом каталоге, где вы храните эти файлы PHP. Иногда у вас могут быть проблемы с ними, если они неправильно установлены. Также убедитесь, что файл php.ini вашего сервера установлен правильно. – Paul

+2

*, но файлы register.php отказываются работать на веб-сервере. * Объясните, что отказывается работать, вы получаете какие-либо ошибки? –

+0

Посмотрите на журнал ошибок. Это может многое сказать. – frz3993

ответ

0

Не уверен, если это причина - но я бы изменить порядок включения:

include('core/init.php'); 
include('navbar_teacher.php'); 
include('header.php'); 

, как у вас есть сеанс начиная с core/init.php, который должен быть запущен до любой выход.

http://php.net/manual/en/function.session-start.php#refsect1-function.session-start-notes


Вы можете добавить дополнительную проверку путем тестирования, что сессия была фактически создана:

$sessionStarted = session_start(); 

if($sessionStarted) 
{ 
    // code here 
} 
else 
{ 
    // echo('Could not start session!'); 
} 
+0

Yup. Что я пропустил .. Я бы подумал, что это проблема ... – Paul

+0

Спасибо всем за ваш комментарий, я пробовал некоторые из предлагаемых предложений, но он все еще не работает, я переставляю код («core/init.php»), include ('navbar_teacher.php'); include ('header.php'); – oduswale

+0

, но файлы register.php отказываются работать на веб-сервере. Конечно, любой пользователь, которого я добавляю, не будет вставлен в мою базу данных, поэтому я включаю файл init.php и пользователи, php-файл на мой вопрос – oduswale

0

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

// начальная форма

       <div class="control-group"> 
           <div class="controls"> 
           <ul> 
<li> 
<div class="control-group"> 
<label>UserName*:</label> 
<input type="text" name="username"> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>Password*:</label>:Hint- Minimum 6 characters<br> 
<input type="password" name="password"> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>Password Again*:</label> 
<input type="password" name="password_again"> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>FirstName*:</label> 
<input type="text" name="first_name"> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>LastName:</label> 
<input type="text" name="last_name" /> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>Student's Class:</label> 
<input type="text" name="class" /> 
</div> 

</li> 
<li> 
<div class="control-group"> 

<label>Unique Address:</label> 
<input type="text" name="mac" /> 
</div> 

</li> 
<li> 
<div class="control-group"> 

<label>Phone Number:</label> 
<input type="text" name="phone_no" /> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>Email*:</label> 
<input type="text" name="email"> 
</div> 
</li> 

<li> 
<div class="control-group"> 
<label>Contact Address:</label> 
<textarea name="address"></textarea> 
</div> 
</li> 
<input type="submit" value="Register"> 
</li> 
</ul> 
</div> 
             </div> 
</form> 

// начальная форма представить

<?php 
if (isset($_GET ['success'])=== true && empty($_GET['success'])=== true) { 
    echo 'You\'ve been registered successfully! Please check your email to activate your account.'; 
}else { 
if (empty($_POST) === false && empty($errors) === true) { 
    $register_data =array(
    'username'  => $_POST['username'], 
    'password'  => $_POST['password'], 
    'first_name'  => $_POST['first_name'], 
    'last_name'  => $_POST['last_name'], 
    'class'    => $_POST['class'], 
    'mac'    => $_POST['mac'], 
    'phone_no'    => $_POST['phone_no'], 
    'email'   => $_POST['email'], 

    'address'   => $_POST['address'], 
    'email_code'  =>md5($_POST['username'] + microtime()) 
); 
register_user($register_data); 
//header('Location: register.php?success'); 
echo("<script>location.href = 'register.php?success=$msg';</script>"); 
exit(); 
} else if (empty($errors) === false) { 
    echo output_errors($errors); 
} 
?> 

Проблема была решена путем добавления ' email_code 'в форму, так как на моей таблице email_code не был определен как 0 или 1. ' email_code '=> md5 ($ _ POST [' username '] + microtime())

solution 
<li> 
    <div class="control-group"> 
    <label>RE-Type Email*:</label> 
    <input type="text" name="email_code"> 
    </div> 
    </li> 

// начальная форма

       <div class="control-group"> 
           <div class="controls"> 
           <ul> 
<li> 
<div class="control-group"> 
<label>UserName*:</label> 
<input type="text" name="username"> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>Password*:</label>:Hint- Minimum 6 characters<br> 
<input type="password" name="password"> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>Password Again*:</label> 
<input type="password" name="password_again"> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>FirstName*:</label> 
<input type="text" name="first_name"> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>LastName:</label> 
<input type="text" name="last_name" /> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>Student's Class:</label> 
<input type="text" name="class" /> 
</div> 

</li> 
<li> 
<div class="control-group"> 

<label>Unique Address:</label> 
<input type="text" name="mac" /> 
</div> 

</li> 
<li> 
<div class="control-group"> 

<label>Phone Number:</label> 
<input type="text" name="phone_no" /> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>Email*:</label> 
<input type="text" name="email"> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>RE-Type Email*:</label> 
<input type="text" name="email_code"> 
</div> 
</li> 
<li> 
<div class="control-group"> 
<label>Contact Address:</label> 
<textarea name="address"></textarea> 
</div> 
</li> 
<input type="submit" value="Register"> 
</li> 
</ul> 
</div> 
             </div> 
</form>