Мой код ломается при получении - не ожидая T_ELSE, ожидая T_FUNCTION - PullRequest
0 голосов
/ 26 ноября 2010

Я пробовал свой код на лампе, wamp и xampp - при этом он работал только на лампе. Однако, если я выгружаю файл php.ini из лампы в xampp, он работает - следовательно, я предполагаю, что я небрежно кодирую на LAMP, что мой php.ini раздражающе разрешает.

В настоящее время мой LAMP php.ini нарушает работу моего xampp mysqli, и мне кажется, что мой код лампы в любом случае должен быть грязным, поэтому мне было интересно, ребята, видите ли вы, что нужно чистить здесь?

class datamanagement{


 protected $mysql_host = "localhost";
 protected $mysql_username = "root";
 protected $mysql_password = "";
 protected $mysql_database = "data";

 protected $security_table = "users";

 function __construct($security_level = 0)
 {
   $this->security($security_level);
 }

 protected function mysql_connect_func(){ 
          // ...standard mysql connect stuff
 }

 protected function security($security_level){


  session_start();

  if(isset($_GET['logout'])){

   session_unset();
  }


  if($security_level > 0)
  {


   if(!isset($_SESSION['initiated'])){

    if(!isset($_POST['username']) || empty($_POST['username']) || empty($_POST['password']))
    {

     if(isset($_GET['logout']))
     {
     $string = rtrim($_SERVER['PHP_SELF'], '?logout');
     }


     ?>

     <div class="main_container">
    <div class="form_container">

    <?php

    if(isset($_GET['logout']))
    {
     echo "<p>successfully logged out</p>";

    }else
    {

     echo "<p>Access to this section require logging in</p>";

    }
    ?>

       <form method="post" action="<?php echo $string ?>"><input
        type="hidden" name="login" value="true"></input>

       <div><label for="title">Username:</label> <input name="username"
        type="text" value="<?php echo $_POST['username']; ?>"></input><?php if(isset($_POST['username']) && $_POST['username'] == ''){echo "username required";}?><br>
       </div>

       <div><label for="post">Password:</label> <input name="password"
        type="password"></input><?php if(isset($_POST['username']) && $_POST['password'] == ''){echo "password required";}?><br>
       </div>

<input type="submit" value="Sign in" name="submit"></input></form>

     </div>
    </div>

    <?


     exit();


    } // end if - no username or password were posted
    else{

     $this->mysql_connect_func();

     $sql = "SELECT * FROM " . $this->security_table . " WHERE  username='" . $_POST['username'] . "'";


     $result = mysql_query($sql) or die(mysql_error());
     $row = mysql_fetch_assoc($result);


     if(mysql_num_rows($result) != 0)
     {


      if(sha1($_POST['password']) == $row['password'])
      {
      session_regenerate_id();
      $_SESSION['initiated'] = "true";
      $_SESSION['username'] = $row['username'];
      $_SESSION['authority'] = $row['authority'];

      } // end if sha1 of $_POST password == $row password
      else {
       ?>

        <div class="main_container">
        <div class="form_container">


       <?php
       echo 'Incorrect password<br><a href="' . $_SERVER['PHP_SELF'] . '">Please try again</a>';
       ?>
       </div>
       </div>


       <?php

       exit();


      }  // if password is wrong


     } // end if no rows with username returned
     else{
?>

        <div class="main_container">
        <div class="form_container">


       <?php
       echo 'Incorrect username <br><a href="' . $_SERVER['PHP_SELF'] . '">Please try again</a>';
       ?>
       </div>
       </div>


       <?php

       exit();

     } // if username not found


    } // end else - no username or password were posted

   } // end if - check the session !initiated

   else {   //*THIS IS THE LINE THAT THROWS THE ERROR IN XAMPP AND WAMP*

    if($_SESSION['authority'] < $security_level)
    {

     die("security clearance insufficient");
    }


   } // end else - check the session !initiated


  } // end if $security_level <= 0

 } // end of function security()

}

Я прошу прощения за то, что это такой здоровенный кусок кода, я не мог придумать логичный способ его разбить, не ставя под угрозу чью-то способность помочь мне найти ошибку. Если у вас, ребята, есть какие-либо предложения по уменьшению размера зверя до более читаемой суммы, скажите, пожалуйста!

1 Ответ

1 голос
/ 06 марта 2011

Я не уверен, поможет ли это вам - однако в строке 67 вам не хватает терминала ; после переменной $string.

и на более легкой ноте -</input> теги не являются частью строгой разметки HTML ...

используйте <input type="submit" value="Sign in" name="submit" /> вместо

...