Loginsystem+index.php?section=

xlanhackerx

Mitglied
Hallo liebe Communiy
Ich bin es mal wieder mit ein paar neuen Sachen welche ich mir in den Kopf gesetzt habe, allerdings nicht hinbekomme
Also ich möchte gerne ein Loginsystem haben für meine Website.
Ich verwende das Loginsystem
[PHP/mySQL] Login-System mit Sessions
und eine index.php?section= Lösung
Nun zu meinem Problem. Ich möchte gerne die einzelnen Bereiche per section= jeweils laden.
Meine index.php
PHP:
<?php session_start (); ?>

<html>
<head>
<title>Money-Play-Login</title>
<link rel="stylesheet" type="text/css" href="images/style.css">
<style type="text/css">
<!--
.Stil1 {color: #FF0000}
.Stil2 {
	color: #FF0000;
	font-weight: bold;
	font-size: 13px;
}
-->
</style>
</head>


<body>

<?php 
if($_GET['section'] != ""){
    $filename = "./content/".$_GET['section'].".php";
    if(file_exists($filename)){
        include($filename);
    } else {
        echo "Diese Seite ist nicht vorhanden oder es gibt Probleme";
    }
}
?> 
<?php 
if (isset ($_REQUEST["fehler"])) 
{ 
  echo "Die Zugangsdaten waren ungültig."; 
} 
?> 
 
<center>
<form action="index.php?section=login" method="post">

  <table border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>LOGIN SYSTEM PLAY-MONEY</td>
      
    </tr>
  </table>
	<br>
    <table border="0" cellspacing="0" cellpadding="0" class="mainpage">
      <tr>
        <td align="center"><a href="index.php"><img src="imggen.php" border="0" height="60" width="270" alt="Grafik" align="center"></a></td>
      </tr>
      <tr>
        <td align="center"><span class="Stil1">Sicherheitscode</span></td>
        <td><input type="text" name="save" onbeforepaste="noPaste()" onpaste="noPaste()"></td>
      </tr>
      <tr>
        <td align="center">Benutzername</td>
        <td><input type="password" name="name" value=""></td>
      </tr>
      <tr>
        <td align="center">Kennwort</td>
        <td><input type="password" name="pwd" value=""></td>
      </tr>
      <tr>
        <td align="center"><input type="Submit" name="login" value="LOGIN"></td>
      </tr>
      <tr>
        <td align="center"><a href="index.php?section=register"><b>Neuen Account anlegen</b></a></td>
      </tr>
      <tr>
        <td align="center"><a href="index.php?section=lost"><b>Passwort vergessen?</b></a></td>
      </tr>
    </table>
	
</form>
</center>
<center class="Stil2">Sollte die Grafik nicht zu lesen, klicke bitte auf die Sicherheitsgrafik um eine neue zu laden.</center>
</body>

</html>
Entweder ich habe irgentwie Tomaten auf den Augen dass ich es nicht sehe wo der Code zum Content laden hin muss, oder ich bin einfach schon zu lange am Quellcode lesen !!
Er läd mir immer wieder den jeweiligen Content über dem Login..
Müsste ich dieses Loginscript auch extra holen also per ?section=start z.B und dann einfach nur weiterleiten
Das zweite Problem ist die Session Übergabe.. Wenn ich mich anmelden möchte, bekomm ich die fehlermeldung
HTML:
Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w0093762/money-play/game/index.php:7) in /www/htdocs/w0093762/money-play/game/content/login.php on line 36
Und nun leider zu meinem dritten Problem, wie könnte ich die Captcha Lösung realisieren Ich habe bereits hier im Forum etwas dazu gefunden, find es allerdings sehr schwer und ich brauche die ganzen Zufallsfonts nicht.. Es soll eine schlichte Grafik entstehen mit gutlesbaren Zahlen und Buchstaben auf einem fablich übergehenden Hintergrund welchen ich ja als jpeg machen kann und dann mit imagecreatefromjpeg laden werde.

Hoffe ich habe mich verständlich ausgedrückt und hoffe auf hilfe.

Mfg. Oliver
 
OK ich habe es zum Teil hinbekommen, habe jetzt einfach die index mit einem switch ausgestattet, welche dann automatisch als startseite die home läd also das Formular von oben zum einloggen. Es klappt auch alles wunderbar.
Nun meine andere Frage, ich habe aus Testgründen zu viele leere Usereinträge die ich nun gelöscht habe, allerdings zählt er mir wenn ich mich neu regestriere jedes mal eine id über die alte, bin schon bei 16 obwohl ich alle gelöscht hatte. Wie kann man die Datenbank " resetten" also dass die id nicht weiterzählt sondern bei 1 anfängt
Nun mein anderes Problem, wie könnte man verhindern dass sich ein User nocheinmal regestriert, also USER 1 (ICH) mit Oliver und PASSWORT und dann USER 2 (ein anderer) sich auch mit Oliver und nem Passwort regestriert, dann ist ja der gleiche Username vorhanden, allerdings nicht das Passwort was ich ja noch akzeptieren würde. Aber ich möchte einfach nicht dass man sich mit einem schon vorhandenen Benutzernamen anmelden kann, Wenn jemand Oliver90 oder oLiver schreibt ist mir das ja egal, aber die gleiche groß und Kleinschreibweise sowie schon vorhandenes Passwort sollen nicht akzeptiert werden..

Danke schonnmal..

Mfg. Oliver
 
hmm also leute ich hab mir überlegt einfach eine ausgabe zu machen, bei der mittels inputfeld die username datenbank durchsucht wird, und somit gesagt wird ob der username schon vorhanden ist oder nicht.. aber ich denke dass man dazu bestimmt nicht ein extra input machen muss um da zu durchsuchen oder ich hoffe mal das direkt im regestriercode der mysql abfrage das zu regeln ist.. aber naja das ist jetzt auch erstmal nebensache..
ich habe ein ganz anderes problem, ich verwende zum loggin ein captcha. aber irgentwie funktioniert das ganze nicht. Es ist immernoch das gleiche Loginsystem von oben !!
PHP:
<?php session_start (); ?>

<html>
<head>

<link rel="stylesheet" type="text/css" href="./images/style.css">
<style type="text/css">
<!--
.Stil1 {color: #FF0000}
.Stil2 {
	color: #FF0000;
	font-weight: bold;
	font-size: 13px;
}
-->
</style>
</head>

<?php

  $fehler = '';

  $captcha_input_nr = (!empty($_POST['captcha_input_nr']) ? $_POST['captcha_input_nr'] : '');

  if (!empty($_POST['captcha_code' . $captcha_input_nr])) {

    // Aufbau der Datenbankverbindung 
$connectionid  = mysql_connect ("localhost", "db", "xxxxxx"); 
if (!mysql_select_db ("db", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

    // Captcha Code anhand der Id aus der Datenbank lesen

    $sql = 'SELECT code FROM captcha WHERE hash="' . mysql_real_escape_string($_POST['captcha_hash']) . '"';

    $query = mysql_query($sql);

    $row = mysql_fetch_array($query);

    // Prüfen ob der Code mit der Benutzereingabe übereinstimmt

    if ($row['code'] == strtoupper($_POST['captcha_code' . $captcha_input_nr])) {

      // Code aus DB löschen

      $sql = 'DELETE FROM captcha WHERE hash="' . mysql_real_escape_string($_POST['captcha_hash']) . '"';

      mysql_query($sql);



      // An dieser Stelle kann die normale Verarbeitung des Formulars stattfinden

      echo 'Richter Code wurde eingegeben.';

    } else {

      $fehler = 'Bitte den richtigen Sicherheitscode eingeben!<br /><br />';

    }

  }



  if (empty($_POST['captcha_code' . $captcha_input_nr]) || !empty($fehler)) {

    // Captcha Id erzeugen

    $captcha_hash = md5(time());

    // Zufallsnummer für das Eingabefeld erzeugen

    $input_nr = rand (1000, 9999);

?>

<body>
<?php 
if (isset ($_REQUEST["fehler"])) 
{ 
  echo "Die Zugangsdaten waren ungültig."; 
} 
?> 
 
<center>
<form action="index.php?section=login" method="post">

  <table border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>LOGIN SYSTEM PLAY-MONEY</td>
      
    </tr>
  </table>
	<br>
    <table border="0" cellspacing="0" cellpadding="0" class="mainpage">
<tr>
<td align="center"><input type="hidden" name="captcha_hash" value="<?php echo $captcha_hash; ?>" /></td>
</tr>
      <tr>
        <td align="center"><a href="index.php"><img src="captcha.php?h=<?php echo $captcha_hash; ?>" alt="Sicherheitsgrafik" border="0"/></a></td>
      </tr>
      <tr>
        <td align="center"><span class="Stil1">Sicherheitscode</span></td>
        <td><input type="text" name="captcha_code<?php echo $input_nr; ?>" /><input type="hidden" name="captcha_input_nr" value="<?php echo $input_nr; ?>" /></td>
      </tr>
      <tr>
        <td align="center">Benutzername</td>
        <td><input type="password" name="name" value="" size="20"></td>
      </tr>
      <tr>
        <td align="center">Kennwort</td>
        <td><input type="password" name="pwd" value="" size="20"></td>
      </tr>
      <tr>
        <td align="center"><input type="Submit" name="login" value="LOGIN"></td>
      </tr>
      <tr>
        <td align="center"><a href="index.php?section=register"><b>Neuen Account anlegen</b></a></td>
      </tr>
      <tr>
        <td align="center"><a href="index.php?section=lost"><b>Passwort vergessen?</b></a></td>
      </tr>
    </table>
	
</form>
<?php

  }

?>
</center>
<center class="Stil2">Sollte die Grafik nicht zu lesen sein, klicke bitte auf die Sicherheitsgrafik um eine neue zu laden.</center>
</body>

</html>
die captcha.php sieht folgendermaßen aus:
PHP:
<?php



// Bild Id generieren

$bg_id = rand(1, 3);



// Schriftfarben setzen

switch ($bg_id) {

  case 1:

  case 2: $colors = array('100', '010', '110', '011', '101'); break;

  case 3: $colors = array('100', '001', '110', '011'); break;

}



// Zeichensatz setzen

$chars = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'M', 'N', 'P', 'Q', 'R', 'T', 'U',

               'V', 'W', 'X', 'Y', 'Z', '2', '3', '4', '5', '6', '7', '9');



// Bild erzeugen

$img = imagecreatefrompng('bg/bg' . $bg_id . '.png');



$code = '';

$xpos = rand(3, 8);

for ($i = 1; $i <= 4; $i++) {

  // Code erzeugen

  $letter = $chars[array_rand($chars)];

  $code .= $letter;



  // Schriftfarben erzeugen

  $c = $colors[array_rand($colors)];

  $r = ($c[0] == 0 ? 0 : 255);

  $g = ($c[1] == 0 ? 0 : 255);

  $b = ($c[2] == 0 ? 0 : 255);

  $col = imagecolorallocate($img, $r, $g, $b);



  // Code zeichnen

  imagettftext($img, 14, rand(-5, 5), $xpos, rand(20, 25), $col, 'ttf/actionjf', $letter);

  $xpos += 20;

}



// Header anpassen

header('content-type: image/png');



// Bild ausgeben

imagepng($img);



// Bild freigeben

imagedestroy($img);


// Aufbau der Datenbankverbindung 
$connectionid  = mysql_connect ("localhost", "db", "xxxxxxxxxx"); 
if (!mysql_select_db ("db", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

// Alte Codes löschen (älter als eine Stunde, oder IP des Users)

$sql = 'DELETE FROM captcha WHERE time < ' . (time() - 3600) . ' OR ip = "'

      . $_SERVER['REMOTE_ADDR'] . '"';

@mysql_query($sql);



// Eindeutige Id des Codes aus dem Parameter auslesen

$code_id = $_GET['h'];



// Neuen Code einfügen

$sql = 'INSERT INTO captcha (hash, code, ip, time) VALUES ("' . mysql_real_escape_string($code_id)

     . '", "' . $code . '", "' . $_SERVER['REMOTE_ADDR'] . '", ' . time() . ')';

@mysql_query($sql); 

?>

Ich kann mich einloggen ohne den captchacode einzugeben !!
Ich hoffe ihr könnt mir dabei helfen !!

Mfg. Oliver
 

Neue Beiträge

Zurück