|
You last visited: Today at 21:45
Advertisement
Regi [PHP] prob
Discussion on Regi [PHP] prob within the Web Development forum part of the Coders Den category.
07/25/2012, 18:46
|
#1
|
elite*gold: 200
Join Date: Jan 2012
Posts: 544
Received Thanks: 47
|
Regi [PHP] prob
Also, mein Problem ist, dass ich nicht weiß, wie ich abfragen kann ob eine ID bereits vorhanden ist...
Das jetzige Script lässt es zu, dass beliebig oft die gleiche ID eingetragen wird...
Script:
<?php
include ('mysql.php');
if (isset ($_POST['submit'])) {
$username = mysql_escape_string($_POST['username']);
$password = mysql_escape_string(sha1($_POST['password']));
if (!empty ($username) && !empty ($password)) {
$sql = mysql_query ("INSERT INTO Users (
user_id,username,user_password,user_regdate)
VALUES (
'0','".$username."','".$password."','".time()."')
");
echo 'You are now registered!';
}else {
echo 'You must enter a username and a password!';}
}else {
echo '<form action="register.php" method="post">
Username: <input type="text" name="username" /><br />
Password: <input type="password" name="password" /><br />
<input type="submit" name="submit" value="Register" />
</form>';}
?>
Kann mir wer helfen? Möglichst "einfach" bitte, so das auch ich das versteh ^_^
Danke
|
|
|
07/25/2012, 18:54
|
#2
|
elite*gold: 0
Join Date: Oct 2010
Posts: 287
Received Thanks: 111
|
Geht es um das user_id Feld ? Weil dann solltest du lieber bei der SQL-Tabelle das Feld auf 'Auto_Increment' stellen. Damit erhöt sich die ID bei jedem Eintrag um 1. Bei jeder Regestrierung einfach 0 reinzuschreiben ist doch sinnlos ?
Dennoch, um den Check zu machen ob der Benutzername schon vergeben ist einfach ne SQL-Abfrage starten und schauen ob er Werte zurück gibt.
Bsp:
PHP Code:
$userExists = mysql_query("SELECT * FROM Users WHERE username = '".$username."'");
Dann schauen ob er ein Ergebniss zurück gibt
|
|
|
07/25/2012, 19:10
|
#3
|
elite*gold: 0
Join Date: Sep 2005
Posts: 427
Received Thanks: 87
|
Quote:
$username = mysql_escape_string($_POST['username']);
$password = mysql_escape_string(sha1($_POST['password']));
|
trim deine Post eingabe, ansonsten kann man den code mit einem leerzeichen killen
Quote:
$username = mysql_escape_string(trim($_POST['username']));
$password = mysql_escape_string(sha1(trim($_POST['password'])));
|
|
|
|
07/25/2012, 19:16
|
#4
|
elite*gold: 0
Join Date: Oct 2010
Posts: 287
Received Thanks: 111
|
Quote:
Originally Posted by kissein
trim deine Post eingabe, ansonsten kann man den code mit einem leerzeichen killen
|
Wenn du mit der Sicherheit dieses Codes anfangen willst...
Er sollte einen HTML-Sonderzeichen Parser auf die empfangenen Variablen anwenden, ansonsten kann man dort sehr gut für Injections ansetzen.
(Zumindest) Das Passwort sollte schon vor dem Senden per JavaScript durch einen einfachen Algorhytmus (Blowfish o.Ä.) verschlüsselt werden, ansonsten kann man die Daten sehr leicht angeln. Das sollte man nebenbei vor allem bei LogIn-Skripts beachten...
Man sollte natürlich auch beachten das der Zeichensatz mit der Kollation der Tabelle übereinstimmt..
Aber ich denke das sind alles Dinge die man für den Anfang nicht braucht und sich früher oder später sowieso erarbeiten muss.
|
|
|
07/25/2012, 19:22
|
#5
|
elite*gold: 0
Join Date: Jun 2010
Posts: 3,406
Received Thanks: 2,024
|
Quote:
Originally Posted by . χaωe
Wenn du mit der Sicherheit dieses Codes anfangen willst...
Er sollte einen HTML-Sonderzeichen Parser auf die empfangenen Variablen anwenden, ansonsten kann man dort sehr gut für Injections ansetzen.
(Zumindest) Das Passwort sollte schon vor dem Senden per JavaScript durch einen einfachen Algorhytmus (Blowfish o.Ä.) verschlüsselt werden, ansonsten kann man die Daten sehr leicht angeln. Das sollte man nebenbei vor allem bei LogIn-Skripts beachten...
Man sollte natürlich auch beachten das der Zeichensatz mit der Kollation der Tabelle übereinstimmt..
Aber ich denke das sind alles Dinge die man für den Anfang nicht braucht und sich früher oder später sowieso erarbeiten muss.
|
Schalte js aus und du sie werfen trotzdem unverschluesselt uebertragen
|
|
|
07/25/2012, 19:27
|
#6
|
elite*gold: 0
Join Date: Oct 2010
Posts: 287
Received Thanks: 111
|
Quote:
Originally Posted by NotEnoughForYou
Schalte js aus und du sie werfen trotzdem unverschluesselt uebertragen
|
Sicher aber 97% der User im Internet haben ihr JS permanent aktiviert. Man kann nicht alles absichern, aber soweit wie man es kann sollte man es auch tuhen.
|
|
|
07/25/2012, 19:37
|
#7
|
elite*gold: 200
Join Date: Jan 2012
Posts: 544
Received Thanks: 47
|
ach ich hab mich schlecht ausgedrückt, mit id, meinte ich eig. Usernamen, (die id erhöht sich komischerweise bei jeder regi, trotz des scripts)
|
|
|
07/25/2012, 19:40
|
#8
|
elite*gold: 0
Join Date: Oct 2010
Posts: 287
Received Thanks: 111
|
Damit ist deine Frage jetzt geklärt ?
Ja ich denke mal das du bei der Tabelle das Feld auf Auto_Increment gestellt hast. Dann ist es egal ob das Skript etwas reinschreiben will, die Priorität von MySQL ist in dem Fall höher.
|
|
|
07/25/2012, 19:42
|
#9
|
elite*gold: 200
Join Date: Jan 2012
Posts: 544
Received Thanks: 47
|
nein ist sie nicht :S
Ich hatte mich nicht richtig ausgedrückt.
Ich möchte verhindern, das sich zwei User mit gleichem Namen registrieren
|
|
|
07/25/2012, 19:59
|
#10
|
elite*gold: 0
Join Date: Oct 2010
Posts: 287
Received Thanks: 111
|
Das habe ich doch in meinem ersten Post erwähnt, sogar mit teilcode. Einfach gucken ob er ein Ergebniss liefert, wenn ja nicht eintragen und Fehlermeldung ausgeben, wenn kein Ergebniss vorliegt eintragen...
|
|
|
07/25/2012, 20:06
|
#11
|
elite*gold: 0
Join Date: Sep 2005
Posts: 427
Received Thanks: 87
|
Quote:
|
Ich möchte verhindern, das sich zwei User mit gleichem Namen registrieren
|
Auf die Datenbanktabelle mit den usernamen dann den Index setzen um die suche zu beschleunigen/ db entlasten.
@. χaωe
das läuft bei mir automatisch mit ein um das Debugen möglichst gering zuhalten. Leerzeichen übersieht man leicht :/
PHP Code:
<?php include ('mysql.php');
if (isset ($_POST['submit'])) { $username = mysql_escape_string(trim($_POST['username'])); $password = mysql_escape_string(sha1(trim($_POST['password']))); if (!empty ($username) && !empty ($password)) { $sql = "SELECT username FROM Users WHERE username='".$username."'"; $nums = mysql_num_rows(mysql_query($sql)); if(!$nums){ $sql = "INSERT INTO Users (user_id,username,user_password,user_regdate) VALUES ('0','".$username."','".$password."','".time()."')"; $res = mysql_query($sql); if($res) echo 'You are now registered!'; } else echo "username vorhanden";
}else { echo 'You must enter a username and a password!';} }else { echo '<form action="register.php" method="post"> Username: <input type="text" name="username" /><br /> Password: <input type="password" name="password" /><br /> <input type="submit" name="submit" value="Register" /> </form>';
} ?>
|
|
|
07/25/2012, 20:30
|
#12
|
elite*gold: 200
Join Date: Jan 2012
Posts: 544
Received Thanks: 47
|
danke, funktioniert  steige zwar noch nicht ganz dahinter, aber das kann ich mir daraus wohl alles erschließen
würd noch öfter thx drücken wenn ich könnt
|
|
|
07/25/2012, 20:57
|
#13
|
elite*gold: 0
Join Date: Sep 2005
Posts: 427
Received Thanks: 87
|
Das SQL Statement solltest du aber trotzdem anpassen, wie . χaωe bereits erklärt hat, macht es keinen sinn user_id jedesmal auf 0 zusetzen / autoincrement ist.
Quote:
|
$sql = "SELECT username FROM Users WHERE username='".$username."'";
|
Abfrage für den username
Quote:
$nums = mysql_num_rows( //liefert anzahl oder false
mysql_query( //liefert eine mysql resource oder false
$sql //Sql statment
));
|
die anweisung im quellcode einfach von rechts nach links lesen oder auf mehrere variable aufteilen, aber da es nur eine abfrage für die problemlösung reicht macht das vorhalten der rückgabewerte von mysql_query keinen sinn.
Quote:
in diesem fall wollen wir in $nums ein false haben -> username noch nicht vorhanden und mit negation wirds halt true
|
|
|
07/25/2012, 22:15
|
#14
|
elite*gold: 0
Join Date: Jun 2012
Posts: 187
Received Thanks: 58
|
Quote:
|
Sicher aber 97% der User im Internet haben ihr JS permanent aktiviert. Man kann nicht alles absichern, aber soweit wie man es kann sollte man es auch tuhen.
|
versuchs einfach mal mit ssl, wozu gibts den mist denn wohl sonst.....
|
|
|
07/26/2012, 08:00
|
#15
|
elite*gold: 200
Join Date: Jan 2012
Posts: 544
Received Thanks: 47
|
danke, jetzt hab ichs verstanden
|
|
|
 |
|
Similar Threads
|
Regi Prob.
07/29/2011 - Metin2 Private Server - 2 Replies
Hey leute.
ich hab ein regi problem.
habe eine regipage wie bei einem tut gemacht.
ich komme drauf doch andere nicht. bitte un hilfe.
(MySql und Apacha an)
|
Prob mit Regi page!
05/16/2010 - Metin2 Private Server - 16 Replies
Habe alles genau nach tut gemacht, ich selber kann ein acc erstellen aber Leute die in Hamachi sind können keine erstellen!
Woran kann das liegen?
|
Hilfe regi page prob.
03/21/2010 - Metin2 Private Server - 5 Replies
Wie oben beschrieben habe ich probleme mit meiner regi page
das Problem ist : ich komme drauf kann auch acc machen die funtzen
aber bei den anderen steht fehler beim verbinden usw..
meine regi läuft mit XAMPP , ich habe dennen auch die richtige addresse gegeben also mit dem port :8080/ und ohne die sind nicht gegangen kann
mir vilt einer sagen warum ?:confused:
Und gibt es vilt noch ein anderes programm womit ich meine regi zum laufen
bringen kann damit die anderen sich auch nen acc...
|
Prob? mit regi^^
02/22/2010 - Metin2 Private Server - 2 Replies
Hallo ich habe ein server gemacht mit sun box virtual wollte wissen wie ich ne regi machen kann die öffnetlich ist danke^^
|
Vipmt2 Regi Prob
05/26/2009 - Metin2 Private Server - 7 Replies
Hi, wenn ich mich auf VipMt2 Registrieren will kommt immer diese Fehlereldung:
刹女捏,扣洗
Übersetzt:
Pinch Bremse und Frauen die Wäsche
-.-''
|
All times are GMT +1. The time now is 21:45.
|
|