2010-11-25 6 views
0

Ich habe meinen Code auf Lampe, wamp und xampp versucht - mit ihm nur arbeiten auf Lampe. Wenn ich jedoch die php.ini-Datei von der Lampe in xampp austausche, funktioniert es - daher vermute ich, dass ich schlampig auf LAMP codiere, dass meine php.ini irritierend permissiv ist.Mein Code bricht, wenn er genommen wird - nicht erwartet T_ELSE, erwartet T_FUNCTION

Momentan bricht meine LAMP php.ini mein xampp mysqli, und es scheint mir, dass mein Lampencode auf jeden Fall schmutzig sein muss, also frage ich mich, ob ihr sehen könnt, was hier gereinigt werden muss?

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() 

} 

Ich entschuldige mich, dass es so ein saftiges Stück Code, ich nicht logisch denken konnte, es zu brechen, ohne dass jemand der Fähigkeit zu beeinträchtigen, mir zu helfen die Fehler zu finden. Wenn ihr Vorschläge habt, die Größe des Biests auf einen leserlicheren Wert zu bringen, sagt bitte!

+0

PHP_SELF ist nicht sicher XSS! – smilingthax

+0

Egal was, du musst deinen Code definitiv umgestalten! Diese tief verschachtelte 'if-else'-Struktur ist schwer zu pflegen. Versuchen Sie, HTML und PHP mehr zu trennen und erwägen Sie, [alternative Syntax für Kontrollstrukturen] (http://php.net/manual/en/control-structures.alternative-syntax.php) –

+0

Felix - das mit großer Begeisterung zu lesen. Ich begann zu denken, dass ich das Ende meiner Fähigkeit erreicht hatte, so zu nisten. –

Antwort

1

ich bin nicht sicher, ob dies wird Ihnen helfen - aber in Linie 67 Sie ; nach dem $string Variable ein Terminal fehlen.

und auf einer leichteren Note - </input>-Tags sind nicht Teil des HTML-Markup strengen ...

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