anfänger problem mit if

Versteh nicht was Du meinst. Entweder bin ich heute extrem schwer von begriff oder wir reden aneinander vorbei.
Du hast doch trotzdem in der Variablen "Name" Deine Werte. Du kannst doch fast beliebig viele Werte speichern. Probier es mal so aus, dann siehst Du was ich meine & schreib mal die Ergebnisse, dann sehe ich mehr:
PHP:
    $log=0; 
   $datenbank=fopen("Nick.txt","r"); 
   while(!feof($datenbank)) 
   { 
   $zeile = fgets($datenbank,100); 
   $mm = explode(" ",$zeile);
     $name=$_POST['name'];
     $passwort=md5($_POST['password']); #wenn verschlüsselte übertragung	ODER 
      $passwort=$_POST['password'];
 
  var_dump(    $name); echo"||";var_dump(     $passwort);echo"||"; 
  var_dump($mm[0]); echo"||";echo"||";var_dump( $mm[1]);echo"||"; 
    
    if($mm[0]==$name[0] AND $mm[1]==$passwort[0]) 
   { 
     $log=1; 
   } 
   else 
   { 
   $log=0; 
   } 
   
  var_dump(    $log); echo"||"
    
   if($log==1) #bzw. if($log="1")
    { 
   echo"Passwort richtig"; 
   echo "<a href='javascript:history.back();'>zurück</a>"; 
    
    
    } 
   if($log==0) #bzw. if($log="0")
    { 
   echo"Passwort falsch"; 
   echo "<a href='javascript:history.back();'>zurück</a>"; 
   }
   fclose ($datenbank); 
   } #end while
 
Warum willst du nur das erste Zeichen von Namen und Passwort vergleichen?
PHP:
if($mm[0]==$name[0] AND $mm[1]==$passwort[0])
$name ist ja nach $name=$_POST['name']; nur ein String.
 
Warum willst du nur das erste Zeichen von Namen und Passwort vergleichen?
Bei einem Array gibt die Zahl in den eckigen Klammern [] also der Index an, auf welches Feld des Array zugegriffen werden soll. Ich vergleiche also nicht nur die ersten Zeichen, sondern die Inhalte des Arrays beim Index Null.

Wenn ich z.B: einem Array einen Wert "Passwort" zuweise, dann mache ich das ja auch so:

$passwort[0]="klingeling";

Falls nicht verstanden: unter Tutorials schauen.

Tue mir doch einfach den Gefallen und kopiere den Code aus dem vorherigen Posting und schreibe mir Deine Fehlermeldung.

Es ist sonst seeeehhhhhrrr mühsam zu diesr Uhrzeit ;)
 
Nun, dazu muß ich keine Tutorials lesen, die Dokumentation zu PHP bzw. speziell den Variablentypen langt vollkommen aus, vielleicht solltest du dir diese erst einmal zu Gemüte führen..
Die Daten im superglobalen Array $_POST sind nicht noch einmal als Array gekapselt, Ausnahmen gibt es nur, wenn diese explizit als Array übergeben werden. Hierzu wäre z.B. ein
HTML:
<input name="name[]">
nötig. Ansonsten hast du nach der oben von mir angegebenen Zuweisung die Variable vom Typ String. Wenn du sie vorher als Array deklariest, müßtest du auch die Zuweisung mittels
PHP:
$name[0] = $_POST['name'];
durchführen, um auf Daten in einem Array zuzugreifen. Ansonsten gibt $name[0] eben das erste Zeichen eines Strings aus.
Kannst du auch gerne mit
PHP:
<?
$name = $_GET['name'];
echo gettype($name);
echo "<br>\$name: $name<br>\$name[0]: ".$name[0];
?>
testen, indem du eine Variable per Get übergibst - war jetzt schneller zu programmieren, bei Post ist es aber nichts anderes.
[edit]Rechtschreibfehler..[/edit]
 
Zuletzt bearbeitet:
leida kommt bei dem vorhanden post code eine endlosschleife

hab ihn koregiert jetzt kommt aba imma passwort falsch usw.
ich möchte das das einmal kommt....
 
Zuletzt bearbeitet:
GuMo,

sorry wegen gestern. Ich dachte Du hast ein Array für Name & Passwort und dass es daran liegen könnte. Hätte vielleicht mal Fragen sollen, aber das passiert wenn man nebenher noch Arbeitet ;)
Neuer Tag, neues Glück. Ja, die endlose Schleife liegt daran, dass ich gestern im Tran Deine While-Bedingung und das Schleifenende nach unten gesetzt habe.

Was ganz neues, hab es noch nicht probiert, aber das geht (falls ich nicht einen Rechtschreibfehler bei den Variablen habe):
PHP:
 if (isset($_POST['submit']) and isset($_POST['name']) and $_POST['name']!=="" and isset($_POST['password']) and $_POST['password']!=="") {
  $password=md5($_POST['password']); #achtung md5 optional
  $name=$_POST['name'];
  #du hast doch bestimmt das passwort und den namen in einer sql-datei...dann geht das so:
  $benutzerabfrage=mysql_query("select passwort,name from user where password='$password' and name='$name'");
  if(mysql_num_rows($benutzerabfrage)>0) {
  while ($user=mysql_fetch_row($benutzerabfrage)) {
  			echo " Hallo $name !";
  			echo "<br></br>";
 			echo "<br>Sie sind jetzt eingeloggt. </br>";
  		  
  				}
  			}
  		else {
 			echo " Passwort oder Benutzername falsch.<br><a href=\"javascript:history.back()\">Zurück</a>";
  		  
  			}
  		}
  
  else {
  echo " Bitte Benutzername und Passwort eingeben. <br><a href=\"javascript:history.back()\">Zurück</a>";
  }
 
mir ist grade noch aufgefallen, daß Du ja oben die $mm per explode einliest. Wenn ich ehrlich bin, habe ich mit explode() nicht viel Erfahrung, aber wenn der vorherige Inhalt ein Array war, geht glaube ich die Struktur verloren. Bitte berichtgen, wenn das falsch ist. Aber ich hatte da mal nen netten Hinweis von KoMtuR :
Re: implode() und explode(): Helfendes Auge gesucht

Wie wäre es wenn du serialize() und unserialize() nutzt? Das geht auch wunderbar und sollte zumindest funktionieren.
Deine Funktion kann nämlich nicht diese Struktur so wiedere herstellen wie du das denkst. Bei der Übergabe und der Rückkonvertierung wird dein Array durch implode und explode in der Struktur zerstört.
Kann es auch daran liegen?
 
Zurück