Seite 1 von 1

Wie mach ich am besten eine Anmeldung per Formular.

Verfasst: So Apr 29, 2012 3:29 pm
von canlot
Ich habe ein einfaches Anmeldescript erstellt. Wenn ich jedoch die Seite aktualisiere dann kommt eine Meldung vom Browser aus und meine Daten werden dann noch mal bearbeitet, weil ich das Formular und den Script in der selben Datei habe auch wenn ich es nur "include". Ich habe das Problem gelöst indem ich bei action eine andere Datei angebe in der sich der Script zum bearbeiten befindet und es dann mit header("Location: sowieso") auf die ursprüngliche Datei zurückleite.
Meine Frage ist ob dass so gut und üblich ist oder es einen anderen, besseren Weg gäbe?

Re: Wie mach ich am besten eine Anmeldung per Formular.

Verfasst: So Apr 29, 2012 4:17 pm
von nouseforname
Das geht auch mit nur einer Seite/Datei. Das ganze nennt sich "Affenformular".

Um zu verhindern dass Deine Daten beim "Selbstaufruf" bearbeitet werden, einfach Abfragen für "$_POST[]" einbinden. Und zwar vor der Ausgabe. Die Sicherheit nicht vergessen und alle Eingaben filtern.


Abfrage ob daten schon eingegebenwurden:

Code: Alles auswählen

	if ((isset($_POST['login'])) && ($_POST['username']) && ($_POST['password'])) {...}

So ruft man die eigene Seite per Form auf:

Code: Alles auswählen

<form action="'.$_SERVER['SCRIPT_NAME'].'" method="post">.... </form>

Re: Wie mach ich am besten eine Anmeldung per Formular.

Verfasst: Mo Apr 30, 2012 1:33 am
von naums
@nouseforname:

Code: Alles auswählen

   if ((isset($_POST['login'])) && ($_POST['username']) && ($_POST['password'])) {...}
das geht auch folgendermaßen auszudrücken:

Code: Alles auswählen

   if ((isset($_POST['login'], $_POST['username'], $_POST['password'])) {...}
@Threadstarter:
ggf. kannst du Variablen noch mit übergeben, sodass der Nutzer nicht aufs Formular zurückgeleitet wird, sondern auf die Seite, von der er kommt. Bei mir besteht eine Ortsangabe aus den 3 Parametern "position", "action" und "id". Wenn der Nutzer sich in $position=home , $action=NULL; $id=NULL befindet wird das vom Anmeldeformular dem login-Skript übergeben, was dann entsprechend auf die Seite wieder zurückleitet. (PS: sollte. Tuts aber im Moment leider nicht ;) )

PPS: Je nach Wichtigkeit der Inhalte kannst du über eine Verschlüsselung der Verbindung nachdenken, aber das ist dann nicht mehr direkt deine Frage betreffend.

MfG Naums

Re: Wie mach ich am besten eine Anmeldung per Formular.

Verfasst: Mo Apr 30, 2012 1:19 pm
von canlot
So habe ich das gemeint:
index.php

Code: Alles auswählen

<?php
session_start();
if($_SESSION["login"] != true)
{
echo '
<form action="login.php" method="POST">
Name <input type="test" size="20" maxlength="50" name="loginname"/>
Passwort <input type="test" size="20" maxlength="50" name="password"/>
<input type="submit" value="Absenden"/>
</form>';
}
else
echo "Du bist eingelogt";
?>
login.php

Code: Alles auswählen

<?php
	session_start();
	if($_POST["loginname"] == "root" and $_POST["password"] == "root")
	{
		$_SESSION["login"] = true;
	}
	else
	{
		$_SESSION["login"] = false;
	}
	header("Location: index.php");
?>
Allerdings bekomme ich "Undefined Index" beim ersten Aufruf und mit isset() funktioniert nicht.

Re: Wie mach ich am besten eine Anmeldung per Formular.

Verfasst: Mo Apr 30, 2012 5:45 pm
von Dominik
Ich empfehle euch gerade bei Formularen mehr mit Empty zu arbeiten
aus if($_SESSION["login"] != true) machst du zb if(empty($_SESSION["login"]))
in der login.php kannst auch den else zweig weglassen...

PS && ist überlicher als and in php

Re: Wie mach ich am besten eine Anmeldung per Formular.

Verfasst: Mo Apr 30, 2012 7:56 pm
von canlot
Ok so funktionierts auch.