WinFuture-Forum.de: Registrierscript - Deutlich Erklären - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Registrierscript - Deutlich Erklären


#1 Mitglied ist offline   intension- 

  • Gruppe: aktive Mitglieder
  • Beiträge: 28
  • Beigetreten: 06. Januar 06
  • Reputation: 0

geschrieben 02. November 2006 - 20:15

Hallo,

ich hab mit ein Registrierscript gebastelt nur leider funktioniert das nicht ganz so wie es eigentlich sollte. Eigentlich funktioniert garnicht :/. Ich hab erstmal das grundgerüst gemacht so wie ich denke das es geht und funktionieren sollte. Ich will derweil noch keine Sicherheits und Verbesserungsvorschläge sondern erstmal das es so geht und man sich registrieren kann. Alles andere mach ich später.

Da ich mich aber noch relativ als Anfänger einschätze möchte ich das ihr mir das bitte leicht verständlich erklärt, weil ich kenne das von anderen Foren wo dann die PHP Profis kommen mit irgendwelchen Fachwörtern nur um den anderen zu zeigen wie toll se nicht sind in der Sprache PHP. Naja hoffe mir können ein paar helfen (Gute Erklärung brauch man halt sonst nützt es alles nix )

Hier die index.php:

<HTML>
<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>" style="display:inline;">
<table width="99%" border="0" align="center" cellpadding="1" cellspacing="1">
<tr>
<td width="21%" bgcolor="#FFFFFF" class="table">Username:</td>
<td width="79%" bgcolor="#FFFFFF">
<input name="username" type="text" class="formLogin" style="width: 100%" id="username">
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" class="table">E-Mail:</td>
<td bgcolor="#FFFFFF">
<input name="email" type="text" class="formLogin" id="email" style="width: 100%">
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" class="table">Password:</td>
<td bgcolor="#FFFFFF">
<input name="password" type="password" class="formLogin" id="password" style="width: 100%" value="">
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" class="table">Confirm password: </td>
<td bgcolor="#FFFFFF">
<input name="confirm" type="password" class="formLogin" id="confirm" style="width: 100%">
</td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFFFFF">
<input name="register" type="submit" class="formSubmitLogin" id="register" 
style="width: 100%" value="Submit">
</td>
</tr>
</table></form>

<?php
	
if($_POST['register']) {

	$username=$_POST['username'];
	$email=$_POST['email'];
	$password=$_POST['password'];
	$confirm=$_POST['confirm'];
	
	
	if($username="") 
die ("Please enter an username.");
	if($email="") 
die ("Please enter an email address.");
	if($password="") 
die ("You have to enter a password.");
	if($confirm="") 
die ("You have to confirm you password.");
	if($confirm != $password) 
die ("Your confirmed password does not match with you password.");
	
	$pass=md5($confirm);
	
	mysql_query("INSERT INTO `users` (id,username,email,password) VALUES ('$id','$username','$email','$pass')");
	
	redirect('../register/', 'Your registration has been sucessfull');
}
else {
	redirect("../register/", "Sorry but there are some errors. Please contact our webmaster.");
}
?>


Also das Script soll bei richtiger Ausführung den User in der Datenbank adden und Fehler anzeigen, wenn kein Username, keine E-Mail Adresse, kein Passwort oder das wiederholte Passwort nicht eingegeben wurde, bzw. das wiederholte Passwort nicht mit dem Passwort übereinstimmt.


Ich hab vorher ein Include in der Datei wo du functions.php included wird, in der error_reporting(E_ALL); steht.

Das Script hat bisher nichts gemacht. Also wenn ich auf Registrieren klick dann gibt er mir weder ne Fehlermeldung noch fügt er den User in die Datenbank hinzu.

Des Weiteren bekomme ich ein Fatal Error der so heißt:

Fatal error: Call to undefined function redirect() in D:\Program Files\xampp\htdocs\lion\register\index.php on line 121

Nach erfolgreichem registrieren soll der User weitergeleitet werden und auf die Page mit der Nachricht die oben im Quelltext steht informiert werden.

Dieser Beitrag wurde von intension- bearbeitet: 02. November 2006 - 20:15

0

Anzeige



#2 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 02. November 2006 - 20:40

Moin,

Zitat

if($username="")[/quote]Vergleiche mit doppeltem Gleich-Zeichen.Füge an die Datenbankanfrage eine Error-Abfrage an, so in etwa:[quote]mysql_query("INSERT INTO `users` (id,username,email,password) VALUES ('$id','$username','$email','$pass')") or die("Fehler: ".mysql_error());

Die redirect-Funktion gibt es nicht. Versuch es stattdessen erstmal mit einem Java-Skript:

Zitat

printf("<script language =\"JavaScript\">document.location.href =\"ADRESSE\";</script>");

wobei ADRESSE deine Zieladresse für den Erfolgsfall ist.
Mehr hab ich im Moment nicht gesehen, versuch's mal.
0

#3 Mitglied ist offline   NightTiger 

  • Gruppe: aktive Mitglieder
  • Beiträge: 701
  • Beigetreten: 19. März 06
  • Reputation: 0
  • Wohnort:Bern
  • Interessen:Webdesign -&gt; (X)HTML, CSS, ein bisschen PHP und ein bisschen JavaScript ;))

geschrieben 02. November 2006 - 20:55

Beitrag anzeigenZitat (MNG: 02.11.2006, 20:40)

Die redirect-Funktion gibt es nicht. Versuch es stattdessen erstmal mit einem Java-Skript:


ich glaub mit header() ist es besser :unsure:

header("Location: http://www.deineseite.com/");

0

#4 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 02. November 2006 - 21:18

Zitat

ich glaub mit header() ist es besser :blink:

Ich glaub' nicht, denn dann kommt vermutlich "Cannot modify header information - headers already sent", da intension- vor dem PHP-Skript schon HTML ausgegeben hat. :unsure:
0

#5 Mitglied ist offline   flo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 7.955
  • Beigetreten: 14. November 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 02. November 2006 - 21:20

Beitrag anzeigenZitat (MNG: 02.11.2006, 21:18)

Ich glaub' nicht, denn dann kommt vermutlich "Cannot modify header information - headers already sent", da intension- vor dem PHP-Skript schon HTML ausgegeben hat. :unsure:



und dagegen hilft ob_start ab anfang und ob_end_flush am ende

Dieser Beitrag wurde von Flo bearbeitet: 02. November 2006 - 21:24

0

#6 Mitglied ist offline   intension- 

  • Gruppe: aktive Mitglieder
  • Beiträge: 28
  • Beigetreten: 06. Januar 06
  • Reputation: 0

geschrieben 02. November 2006 - 22:43

Und zum Glück weis ich nicht was beide bringen und wo ich sie ansetzen muss. Aber danke für die Tipps :blink:

Achja was genau ist der Unterschied zwischen print und printf?

Dieser Beitrag wurde von intension- bearbeitet: 02. November 2006 - 22:48

0

#7 Mitglied ist offline   intension- 

  • Gruppe: aktive Mitglieder
  • Beiträge: 28
  • Beigetreten: 06. Januar 06
  • Reputation: 0

geschrieben 02. November 2006 - 22:57

So ok Leute alles funktioniert. Nur möchte ich nun das er wenn er sich erfolgreich registriert eine Nachricht bekommt das er erfolgreich registriert wurde. Ich hab da nun anstatt redirect das printf angewended undzwar so

printf("<script language =\"JavaScript\">document.location.href =\"../register/\";</script>");

Das soll heißen das er auf die register Seite wieder kommen soll und dort aber auch ne Message wie "Successfully registered." bekommen soll. Wie kann ich das denn da hinmachen gibts da irgendwie ein Befehl oder ne anderen Lösung?

Edit// Achja wie siehts bei den Errors oben die werden bei mir UNTER dem Design angezeigt wie bekomme ich die ins Design also in den Contentbereich?

Dieser Beitrag wurde von intension- bearbeitet: 02. November 2006 - 22:59

0

#8 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 02. November 2006 - 23:01

Moin,

printf = print formatted, erlaubt das Einsetzen von Parametern und deren Ausgabe in einem bestimmten Format, funktioniert aber auch bei normalem Text, dann ist sie identisch zu print. Hab' mir das irgendwie angewöhnt, kannst auch einfach print nehmen.

Mit ob_start am Anfang deiner Datei pufferst du alle Ausgaben deines Skripts, mit ob_flush am Ende schreibst du sie erst in den Ausgabe-Stream. Damit umgehst du die Problematik bereits gesendeter Header. Das sagt dir momentan vermutlich nicht viel, daher schlage ich vor, dass du vorerst die JavaScript-Weiterleitung benutzt, das kann man später leicht ändern, wenn der Rest funktioniert.

EDIT:
Wenn die Fehler innerhalb deiner Seite auftauchen sollen, dann musst du das PHP-Skript innerhalb von deinem HTML-Code einsetzen. Die Ausgaben des Skripts erscheinen dann an genau dieser Stelle.

Dieser Beitrag wurde von MNG bearbeitet: 02. November 2006 - 23:04

0

#9 Mitglied ist offline   intension- 

  • Gruppe: aktive Mitglieder
  • Beiträge: 28
  • Beigetreten: 06. Januar 06
  • Reputation: 0

geschrieben 02. November 2006 - 23:12

ok stimmt :blink: danke für die erklärung :P gut mit ob_start und so sind noch ein paar fachwörter drin die noch nicht verstehe aber das javascript reicht mir erstmal danke ich ;)


EDIT// Hm seit ich das PHP Script in dem Contentbereich habe lädt die seite ganz lange bzw garnicht :/

EDIT2// Hab herausgefunden woran es liegt. Es liegt an den printf befehlen. Anscheinend macht er ständig eine weiterleitung zu ../register/

Dieser Beitrag wurde von intension- bearbeitet: 02. November 2006 - 23:25

0

#10 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 02. November 2006 - 23:23

Nanu, das sollte nicht passieren :blink:
Poste die aktuelle Version des Skripts nochmal. Oder hast du es irgendwo online, dann seh' ich's mir dort an.
0

#11 Mitglied ist offline   intension- 

  • Gruppe: aktive Mitglieder
  • Beiträge: 28
  • Beigetreten: 06. Januar 06
  • Reputation: 0

geschrieben 02. November 2006 - 23:32

Ich werd nun alles auf www.nopaste.biz posten und euch den link geben ist denk ich einfacher :blink:

hier der erste link (beschreibung ist immer dabei)

http://nopaste.biz/?9243
0

#12 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 02. November 2006 - 23:44

Stimmt, am einfachsten unten den else-Zweig wegnehmen, also
else { 
	printf("<script language =\"JavaScript\">document.location.href =\"../register/\";</script>"); 
}

kann weg. Dann wird nur weitergeleitet, wenn $_POST['register'] gesetzt ist.
0

#13 Mitglied ist offline   intension- 

  • Gruppe: aktive Mitglieder
  • Beiträge: 28
  • Beigetreten: 06. Januar 06
  • Reputation: 0

geschrieben 03. November 2006 - 00:14

Und wie sieht das mit der nachricht aus die dann erscheinen soll kann man die in dem printf befehl mit einfügen?
0

#14 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 03. November 2006 - 00:19

Jo, dat geht:
printf("<script language =\"JavaScript\">alert('Registrierung erfolgreich.'); document.location.href =\"../register/\";</script>");

Das würd's wohl tun.
0

#15 Mitglied ist offline   intension- 

  • Gruppe: aktive Mitglieder
  • Beiträge: 28
  • Beigetreten: 06. Januar 06
  • Reputation: 0

geschrieben 03. November 2006 - 12:29

Ok danke soweit funktioniert nun alles. Wie sieht das aus habt ihr ein paar Verbesserungsvorschläge in Sachen Sicherheit? Wenn ja dann bitte mit guter Erklärung damit ich das versteh ;) weil sonst bringts ja nix ;)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0