fragenderc: Leere Variable???

Hallo ich habe ein Loginskript, dass die Information des Users ($one) anhängen soll, jedoch wird ein Link erstellt bei der die Variable leer zu sein scheint. Ich habe mir das Skript mehrmals angeschaut aber kein Fehler gefunden. Aber mehrere Augen sehen ja bekanntlich mehr als zwei: Vielleicht findet hier ja jemand einen Fehler (Das einloggen funktioniert ja):

  
<?php  
session_start();  
?>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
<html>  
<head>  
<title>Interner Bereich</title>  
</head>  
<body text="#FFFFFF" link="#FF0000" vlink="#FF0000" alink="#FF0000" bgcolor="#FFC20F" topmargin="0" marginheight="0"  leftmargin="0" marginwidth="0" oncontextmenu="return false" onselectstart="return false">  
<br>  
<table width="150%" border="0" cellpadding="0" cellspacing="0">  
 <tr valign="top" >  
  <td valign="top" ><table width="100%" cellpadding="3" bgcolor="#E2031A" cellspacing="1" border="0">  
<tr>  
<td align="justify" width="100%">  
<font color="#FFFFFF"><b>Login</b></font>  
  
</tr>  
</table>  
<table width="100%" cellpadding="3" cellspacing="1" border="0"><tr>  
<td height="15" width="100%"></td>  
<tr>  
<td width="100%"><br>  
<?php  
$username = $_POST["username"];  
$passwort = $_POST["password"];  
$passwort = md5($passwort);  
$log=0;  
  
$str = md5($_POST["username"]);  
$Base64_Encode = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",  
"S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",  
"p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/");  
$Base64_Value = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16",  
"17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35",  
"36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55",  
"56", "57", "58", "59", "60", "61", "62", "63");  
$Encode = array_combine($Base64_Encode, $Base64_Value);  
for($i = 0; $i < strlen($str1); $i++)  
{  
    $new_str  .= str_pad(decbin($Encode[$str{$i}]), 8, 0, STR_PAD_LEFT);  
}  
$str1 = $new_str;  
$Base64_Encode = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",  
"S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",  
"p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/");  
$Base64_Value = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16",  
"17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35",  
"36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55",  
"56", "57", "58", "59", "60", "61", "62", "63");  
$Encode = array_combine($Base64_Encode, $Base64_Value);  
for($i = 0; $i < strlen($str1); $i++)  
{  
    $one = str_pad(decbin($Encode[$str1{$i}]), 8, 0, STR_PAD_LEFT);  
}  
$userdatei = fopen ("ap/user.txt","r");  
while (!feof($userdatei))  
   {  
   $zeile = fgets($userdatei,500);  
   $userdata = explode("|", $zeile);  
  
   if ($userdata[0]==$username and $passwort==trim($userdata[1]))  
      {  
      $_SESSION['username'] = $username;  
        {  
  
echo "<b>Login war erfolgreich.</b><br><a href='geheim.php?100010010100101010010100101=.$one./'>";  
echo "Zum gesch&uuml;tzten Bereich hier klicken!</a><br>  
<br>  
<br>  
<a href=\"/beta/ap\">Zum Administrationspanel hier klicken!</a> <br>  
extra Kennwort benötigit</p><br><br>Dieser Link ist aus Sicherheitsgründen leider notwendig. Ich bitte zu entschuldigen das keine automatische Weiterleitng erfolgen kann.";  
       $log = 1;  
        }  
      }  
   }  
fclose($userdatei);  
  
if ($log==0)  
   {  
   echo "Zugriff verweigert <a href=\"login.htm\">Zurück</a>";  
   }  
?>  
</td>  
</tr>  
</table></td>  
 </tr>  
</table>  
</body>  
</html>  

  1. Ich bitte die Menge die ich gepostet habe zu entschuldigen, aber da ich überhaupt nicht weiß wo der Fehler liegt, blieb mir nichts anderes übrig. SRY

  2. Hi,

    Hallo ich habe ein Loginskript, dass die Information des Users ($one) anhängen soll, jedoch wird ein Link erstellt bei der die Variable leer zu sein scheint.

    Scheint, oder ist?
    Mache an geeigneten Stellen Kontrollausgaben.
    var_dump bietet sich dafuer an.

    <?php
    $username = $_POST["username"];
    $passwort = $_POST["password"];

    Warum ueberpruefst du hier ueberhaupt nicht, ob entsprechende Eintraege im $_POST-Array ueberhaupt vorhanden sind? Dafuer gibt es isst/empty.
    Und wofuer kopierst du die Werte aus dem Array um? Das solltest du lassen - an der $_POST-Schreibweise kann man im Scriptverlauf gut erkennen, woher die Werte stammen - im anderen Falle nicht.

    Stelle bitte das error_reporting auf E_ALL (und display_errors auf on), sofern nicht bereits geschehen.

    Und gewoehne dir an, eine vernuenftige Fehlerkontrolle und -behandlung durchzufuehren, bei allen ggf. kritischen Operationen, also z.B. bei Datenbank- oder Dateioperationen. Derzeit gehst du ja einfach davon aus, dass bspw. das Oeffnen einer Datei "klappt", ohne dich im geringsten dafuer zu interessieren, ob das auch tatsaechlich der Fall war.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
  3. Mahlzeit fragenderc,

    <?php
    $username = $_POST["username"];
    $passwort = $_POST["password"];

    Siehe ChrisBs Hinweis.

    <a href="/beta/ap">Zum Administrationspanel hier klicken!</a> <br>
    extra Kennwort benötigit</p><br><br>Dieser Link ist aus Sicherheitsgründen leider notwendig. Ich bitte zu entschuldigen das keine automatische Weiterleitng erfolgen kann.";

    Wieso nicht?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  4. Hi,

    Hallo ich habe ein Loginskript, dass die Information des Users ($one) anhängen soll,

    Wozu eigentlich, wenn du doch mit Sessions arbeitest?
    Wieso willst du da irgendwelche sensiblen Informationen per Link uebergeben?

    Und was soll die "Verschluesselung" und der zugehoerige Code eigentlich?
    Wieso werden da Arrays doppelt befuellt, aber beide Male mit den gleichen Werten?
    Und wieso versuchst du, BASE64-Kodierung "per Hand" hinzubasteln, wo es dafuer doch fertige Funktionen gibt?

    Sieht alles sehr konfus aus, das ganze.
    Vielleicht solltest du lieber noch mal von vorne anfangen - und zwar dieses Mal mit Logik und gruendlicher Ueberlegung.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
  5. $userdatei = fopen ("ap/user.txt","r");

    zu dem bereits gesagten finde ich das hier auch äusserst sicherheitskritisch, wenn die datei mit userdaten innerhalb deines public-verzeichnisses liegt

    security through obscurity ist in manchenfällen sinnvoll (zusätzlich zu einem bestehenden, ordentlichen system) sonst aber nicht

    du solltest (sofern du es nicht bereits getan hast) tunlichst dafür sorgen, dass der server bei einem direktzugriff ein 403 forbidden rausfeuert - das brigt aber das risiko, dass du bei einem unzug ggf vergisst, dass diese datei geschützt werden muss

    noch besser: hinterlege die daten in ein php-include (ein array zb) und prüfe in diesem file ob eine konstante aus dem mutter-file gesetzt ist - wenn diese konstante nicht vorhanden ist, lasse das script kommentarlos sterben

    noch viel besser:
    verlagere die daten in eine datenbank oder verschiebe sind an eine stelle ausserhalb deines public-verzeichnisses