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!
PHP_SELF ist nicht sicher XSS! – smilingthax
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) –
Felix - das mit großer Begeisterung zu lesen. Ich begann zu denken, dass ich das Ende meiner Fähigkeit erreicht hatte, so zu nisten. –