Zwei Fragen: Link ohne Klick erstellen, Loginfehler aus selber Seite ausgeben

  • Themenstarter Themenstarter ByeBye 31659
  • Beginndatum Beginndatum
B

ByeBye 31659

Hallo,

ich habe zwei Fragen:

1)
Ich hab ein Loginscript versucht zu schreiben, in dem man username und password angeben muss. Wie mache ich das nun, das er das nicht an eine andere Datei schickt zur Überprüfung sondern an sich selber und bei einem Fehler die Loginfelder wieder ausgibt mit einem kommentar daunter?

Code:
		<h2>Login</h2>
		<form action="admin.php" method="post">
			  <table>
			  		 <tr align="middle">
					 	 <td>
						 	 Username:&nbsp;
							 <input type="text" name="user" size="20"></input><br>
							 Password:&nbsp;
							 <input type="text" name="pass" size="20"></input>
						 </td>
					 </tr>
					 <tr align="middle">
					 	 <td>
					 	 	 <input type="Submit" value="Einloggen"></input>
						 	 <input type="Reset" value="zurück setzen"></input>
						 </td>
					 </tr>
			  </table>
		</form>

Ich möchte den Namen und das Passwort später mit einer DB abgleichen das bekomme ich aber auch hin, denke ich.

2)
Wie mache ich einen Link, der ausgeführt wird wenn eine If anweisung zutrifft, also so das der user nciht auf den Link klicken muss bzw diesen nichtmal sieht?

Wäre für jede Hilfe sehr dankbar...
 
zu 1.) Das HTML-Login-Formular darf nicht in einer seperaten HTML-Datei stehen, sondern in der admin.php selbst. Dadurch kannst Du auf diese Datei wieder verweisen, die eine Fehlermeldung augibt (und das Formular), wenn man sich nicht anmelden konnte. Ob ein Login erfolgt oder nicht, kannst Du über einen Parameter steuern, den Du entweder via GET an den Action-Parameter im Formular-Tag anhängst oder via POST über ein Input-Feld vom Typ hidden.

zu 2.) Ist der Login erfolgreich gewesen, dann kannst Du wiefolgt auf eine andere Seite weiterleiten.
PHP:
header('Location: http://deinserver.de/neueseite.html');
exit;
Das funktioniert aber nur, wenn vorher noch kein anderer Header gesendet wurde, bzw. noch keine Ausgabe an den Client erfolgte.

snuu
 
Hmm ihc glaube cih versteh so im Grunde wie es klappen soll aber an der Umsetzung fehlt es mir, ich plan nicht ganz was cih nun wo hineinschreiben soll bei der 1. Frage, also cih schicke das Formular an sich selber zurück also an eine Php-Datei, und wie mache cih das nun mit dem Parameter übergeben so da sich prüfen kann ob das Einloggen erfolgreich war?

Hiermit möchte cih die DB Abfragen
Code:
		$result = mysql_query("SELECT * FROM login");
		while($datensatz = mysql_fetch_array($result)){
				if(($datensatz['user'] == $user)&&($datensatz['pass'] == $pass)){
						header('Location: http://localhost/php/admin/admin.php'); 
						exit;
				}
		}

Wenn dies stimmt soll halt die andere Datei geladen werden udn sonst die gleich wieder, aber irgendwo klemmt es noch bei mir im Kopf, kansnt mir da etwas auf die Sprünge helfen?

Also dieses Code habe ich in der gleichen Datei wie das Forumlar....
 
Hier ein kleines Beispielscript. Das wäre Deine admin.php:
PHP:
<?php

  // Hier wird geprüft, ob die Login-Daten geprüft werden sollen
  if ($_POST['action'] == 'login') {
    // Logindaten prüfen
    // ...
    
    // Wenn Login erfolgreich war
    if ($login_korrekt) {
      header('Location: http://www.meinserver.de/neue_datei.php');
      exit;

      // Wenn Login nicht erfolgreich war
    } else {
      $error = 'Sie konnten sich nicht anmelden!';
    }
  }
  
  echo '
    <html>
      <body>
        '.$error.'
        <form action="admin.php" method="POST">
          <input type="hidden" name="action" value="login">
          <input type="text" name="benutzername">
          <input type="password" name="passwort">
          <input type="submit" value="login">
        </form>
      </body>
    </html>
  ';
?>
 
Ich habe das nun eigentlich soweit hinbekommen dank deiner Hilfe.

Code:
<?
if ($_POST['action'] == 'login') { 

        $verbindung = mysql_connect($host, $user, $pass);
        mysql_select_db($database);
		
		$result = mysql_query("SELECT * FROM login");
		$fehler=0;
		while($datensatz = mysql_fetch_array($result)){
				if(($datensatz['user'] == $_POST['user'])&&($datensatz['pass'] == $_POST['pass'])){
						header('Location: http://localhost/php/admin/admin.php'); 
						exit;
				}
				else{
					 $fehler = 1;
				}
		}
		mysql_close($verbindung);
}

echo '<center>
		<h2>Login</h2>
		<form action="login.php" method="post">
			 <input type="hidden" name="action" value="login"> 
			  <table>
			  		 <tr align="middle">
					 	 <td>
						 	 Username:<br>
							 Password:
						 </td>
						 <td>
							 <input type="text" name="user" size="20"></input><br>
							 <input type="text" name="pass" size="20"></input>
						 </td>
					 </tr>
					 <tr align="middle">
					 	 <td colspan=2>
					 	 	 <input type="Submit" value="Einloggen"></input>
						 	 <input type="Reset" value="zurück setzen"></input>
						 </td>
					 </tr>
			  </table>
		</form>';

if($fehler ==1){
	echo "Ihre letzte Anmeldung war fehlerhaft. Bitte versuchen Sie es erneut.";
}

echo '</center>';
?>

Allerdings wenn man nun sich falsch anmeldet kommt die Fehlermeldung, was soweit ja auch sein soll, bloß wenn man die Seite nun aktualisiert kommt die fehlermeldung immer noch, was ich nicht so gerne möchte. Kann man das irgendwie umgehen?

Hat da jemand einen Tipp?
 
Du kannst abfragen ob es einen Post mit diesen Variablen gegeben hat.
PHP:
if (($HTTP_POST_VARS['user'])&&($HTTP_POST_VARS['pass'])) 
{ 
 /*
 Dann soll er eben dein Script mit der Login Überprüfung ausführen
 und danach den Login ausgeben
 */
}
else
{
 /*
 Soll er das ganze ohne Überprüfung ausgeben
 */
}

Grüße Posseidon
 
Zuletzt bearbeitet:
Das behebt leider nicht mein Problem.

Wenn cih das Fenster schliesse und dann die Seite erneut aufrufe, so ist die Fehlermeldung weg, aber aktualisiere cih das Fenster einfach nur so bleibt die Fehlermeldung. Denn an das Fenster wurde ja einmal die Variable geschickt.

Ich möchte nun irgendwie sagen, dass wenn die Seite vom User aktualisiert wird, soll die Variable gelöscht werden oder so ähnlich...
 
hmm

Ob das geht weiß ich nicht so genau!

Hab nur einmal ein Problem gehabt mit den Post Variablen dass wenn man im Browser auf zurück klickt dass dann eine Meldung kommt => Es wurden POST var übergeben ....
Da wurde mir gesagt gibts keine Möglichkeit dies zu unterdrücken!
 
Natürlich bleibt die Fehlermeldung nach dem Aktualisieren bestehen, warum auch nicht? Wenn Du auf google gehst und nach einem Suchbegriff suchst und danach aktualisierst, baut sich die Seite auch wieder mit den Ergebnissen Deines Suchbegriffs auf (Sinn der Aktualisierung).

snuu
 
Zurück