Archiv verlassen und diese Seite im Standarddesign anzeigen : Weiterleitung nach "submit" ?
SHViperia 13-10-2006, 23:45 Servus, schaut euch mal diesen Code an.
Wie mache ich es, das man nach dem Klick auf "Register" zu einer anderen Seite weiter geleitet wird?
<?
include 'sessionhelpers.inc.php';
echo '<form method="post" action="register.php">
<label>Benutzername:</label><input name="UserName" type="text" id="UserName"><br>
<label>Passwort: </label><input name="UserPass" type="password" id="UserPass"><br>
<label>EMail: </label><input name="UserMail" type="text" id="UserMail"><br>
<input name="register" type="submit" id="register" value="Register">
</form>';
$UserName = $_POST["UserName"];
$UserPass = $_POST["UserPass"];
$UserMail = $_POST["UserMail"];
$eintrag = "INSERT INTO users (UserName, UserPass, UserMail) VALUES ('$UserName', MD5('$UserPass'),
'$UserMail')";
$eintragen = mysql_query($eintrag);
?>
onemorenerd 13-10-2006, 23:59 Entweder du nutzt den action-Parameter des Form-Tags und verarbeitest die Daten dann dort, wo immer sie hingesandt werden oder nur schickst den Browser nach der Verarbeitung durch ein header('Location http://example.com'); weiter. Meta-Refresh wäre auch noch eine Möglichkeit, ist aber eher was für die Kleinen. ;)
SHViperia 14-10-2006, 00:30 wenn ich das ich das mit dem "action"-parameter mache, dann weiss ich nicht genau, an welcher stelle die verarbeitung dann erfolgen muss.
Nehmen wir mal an, ich mache action="start.php"
, muss ich dann in die start.php folgendes reinschreiben:?
<? $UserName = $_POST["UserName"];
$UserPass = $_POST["UserPass"];
$UserMail = $_POST["UserMail"];
$eintrag = "INSERT INTO users (UserName, UserPass, UserMail) VALUES ('$UserName', MD5('$UserPass'),
'$UserMail')";
$eintragen = mysql_query($eintrag);
?>
oder kommt das an ne ganz andere stelle?
:dontknow:
.....ist mein erstes login-script....
klar weil die daten dann aus dem form an die start.php weitergeleitet werden! ich würde das ganze aber dann in der Start.php in einer If abfrage verpacken. Damit nicht bei jedem aufrufen der start.php ein eintrag in die sqldaten bank erfolgt ;)
if(isset($_POST['register']) and !empty($_POST['register']))
{
// Deine Mysql verarbeitung
}
ich würde das formular und die formularverarbeitung in eine date packen. stichwort -> affenformular
SHViperia 14-10-2006, 19:50 @Edlly:
Ok, nun klappt das ja schonmal ganz gut. Es wird zur start.php weitergeleitet und auch nur ein einziger Eintrag in die DB vorgenommen.
Danke erstmal dafür :)
Jetzt habe ich leider noch ein Problem mit dem Logout.
Also hier erstmal die Dateien, die ich verwende:
register.php
<?
include 'sessionhelpers.inc.php';
echo '<form method="post" action="start.php">
<label>Benutzername:</label><input name="UserName" type="text" id="UserName"><br>
<label>Passwort: </label><input name="UserPass" type="password" id="UserPass"><br>
<label>EMail: </label><input name="UserMail" type="text" id="UserMail"><br>
<input name="register" type="submit" id="register" value="Register">
</form>';
?>
login.php
<?
session_start();
include 'sessionhelpers.inc.php';
echo '<a href="register.php">Anmelden</a>';
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
echo '<form method="post" action="login.php">
<label>Benutzername:</label><input name="username" type="text"><br>
<label>Passwort: </label><input name="userpass" type="password" id="userpass"><br>
<input name="login" type="submit" id="login" value="Einloggen">
</form>';
else
echo '<a href="logout.php">Ausloggen</a>';
echo '<p /><a href="logged_in.php">Check</a><p />';
echo '<p /><a href="start.php">Start</a><p />';
$result = mysql_query("SELECT * FROM users") or die ("Fehler");
if ($result)
{
while ($row = mysql_fetch_array ($result))
{
print "<b>Du bist eingeloggt als: </b>";
print $row['UserName'];
}
mysql_free_result($result);
}
?>
logged_in.php
<?
session_start();
include 'sessionhelpers.inc.php';
echo 'Sie sind ';
if (!logged_in())
echo 'nicht ';
echo 'eingeloggt.<p />';
echo '<a href="login.php">Start</a>';
?>
sessionhelpers.inc.php
<?
function connect()
{
$con=mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('dg001',$con) or die(mysql_error());
}
function check_user($name, $pass)
{
$sql="SELECT UserId
FROM users
WHERE UserName='".$name."' AND UserPass=MD5('".$pass."')
LIMIT 1";
$result=mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($result)==1)
{
$user=mysql_fetch_assoc($result);
return $user['UserId'];
}
else
return false;
}
function login($userid)
{
$sql="UPDATE users
SET UserSession='".session_id()."'
WHERE UserId=".$userid;
mysql_query($sql);
}
function logged_in()
{
$sql="SELECT UserId
FROM users
WHERE UserSession='".session_id()."'
LIMIT 1";
$result=mysql_query($sql);
return (mysql_num_rows($result)==1);
}
function logout()
{
$sql="UPDATE users
SET UserSession=NULL
WHERE UserSession='".session_id()."'";
mysql_query($sql);
}
connect();
?>
start.php
<?
session_start();
include 'sessionhelpers.inc.php';
if(isset($_POST['register']) and !empty($_POST['register']))
{
$UserName = $_POST["UserName"];
$UserPass = $_POST["UserPass"];
$UserMail = $_POST["UserMail"];
$eintrag = "INSERT INTO users (UserName, UserPass, UserMail) VALUES ('$UserName', MD5('$UserPass'),
'$UserMail')";
$eintragen = mysql_query($eintrag);
}
echo '<a href="login.php">Klicke hier um dich einzuloggen</a>';
if (isset($_POST['login']))
$result = mysql_query("SELECT * FROM users") or die ("Fehler");
if ($result)
{
while ($row = mysql_fetch_array ($result))
{
print "<b>Du bist eingeloggt als: </b>";
print $row['UserName'];
}
mysql_free_result($result);
}
?>
logout.php
<?
session_start();
include 'sessionhelpers.inc.php';
echo 'Sie sind ';
if (!logged_in())
echo 'nicht ';
echo 'eingeloggt.<p />';
logout();
echo 'Sie sind ';
if (!logged_in())
echo 'nicht ';
echo 'eingeloggt.< p/>';
echo '<a href="login.php">Einloggen</a>';
?>
Wenn ich mich jetzt registriert habe, dann wird ja zur Start.php geleitet.
Nun sollte dort aber eigentlich dann stehen:
Du bist eingeloggt als: SHViperia
(zum Beispiel)
Da steht aber garnichts.
Gehe ich nun auf die login.php um mich einzuloggen, steht dann folgendes:
Du bist eingeloggt als: SHViperia
Du bist eingeloggt als: Olle
Du bist eingeloggt als: Spieler1
Du bist eingeloggt als: Spieler2
Sollte aber eigentlich nur immer 1 einziger name da stehen.
Die datenbank habe ich geprüft. Da steht immer nur jeweils eine Session. und bei den anderen accounts ist sie NULL.
Wo liegt jetzt schonwieder der fehler?
Original geschrieben von SHViperia
Wo liegt jetzt schonwieder der fehler?
Das hast du im login.php genau so programmiert . Am einfachsten schaust du
zuerst mal an, was sich in diesem skript so alles abspielt, so plus-minus 10 Zeilen
um die Zeile herum, die den user ausgibt.
Nun aber noch etwas zum aufbau des register.php. Du hast zuerst das Formular,
dann die Verarbeitung, so wie es sich auch zeitlich präsentiert. Viel besser wäre es
aber, zuerst die Verarbeitung zu skripten und dann das Formular auszugeben.
Viel Glück.
Noch als tip, möglicherweise hast du bloss im "select * from user" eine
"where session=..." programmieren wollen.
SHViperia 15-10-2006, 00:06 Ja genau, es soll der Name der aktuellen Session angezeigt werden.
Original geschrieben von SHViperia
Ja genau, es soll der Name der aktuellen Session angezeigt werden.
Tipp: versuche mal im Login.php die folgende Variante anstatt der Zeile
result = mysql_query("SELECT * FROM users") or die ("Fehler");
result = mysql_query("SELECT * FROM users WHERE UserId=$userid") or die ("Fehler");
[ontopic]
wie im alten Rom und im Nazireich machen Verbannte die Arbeit, die
Herren haben bloss die Peitsche. @slava wie ist nochmals die russische php-Seite?
vielleicht geht es im Archipelaggulag более по-человечески zu
[/offtopic]
Im Start.php kannst du folgende Erweiterung versuchen, anstelle der Zeile
$result = mysql_query("SELECT * FROM users") or die ("Fehler");
$result = mysql_query("SELECT * FROM users where UserName=$UserName") or die ("Fehler");
SHViperia 16-10-2006, 02:01 Danke vielmals, jetzt klappts ganz gut.
:rocks:
Läufer_n 16-10-2006, 12:37 Original geschrieben von SHViperia
Danke vielmals, jetzt klappts ganz gut.
Bitte gern geschehen, trotz dem Spinner_mod wahsaga, der mich jedesmal rauswirft (bannt),
selber die Anfrage aber nicht bearbeiten könnte.
SHViperia 16-10-2006, 23:14 Komm doch zu meiner seite...ich brauche noch fähige leute, die lust haben zu helfen...ganz ohne zwang und zeitdruck ^^
www.webmasters-ressource.de
daraus soll mal großes werden.....vllt umso besser mit deiner hilfe ;)
Forum installiere ich dann noch wenn zeit ist.
:rocks: :huep:
Ja, bitte tu uns den Gefallen.
ich verstehe auch nicht, was die ganzen multiaccounts sollen (ich kenne ca. ein dutzend).
ahnung hat er zumindest - aber er ist auch eine (multiple) persönlichkeit mit php-fachkenntnis ;)
SHViperia 17-10-2006, 17:56 Ich finde dieses ganze multi-hin-und-her egal.
Selbst wenn es sich um eine multiple persönlichkeit handelt - wenn er gescheite antworten gibt und ahnung hat (und das tut/hat er ja ^^) , dann habe ich auch nichts gegen mehrere accounts
.....wenns spaß macht :rocks:
|
-
- |