Antworten auf deine Fragen:
Neues Thema erstellen

[PHP]Was ist falsch ?

zuck

Noch nicht viel geschrieben

Hallo,

ich dange langsam an php zu lernen und wollte eine regi page seite machen aber sie geht nicht.

do_reg.php
PHP:
<?php
$host = localhost;
$dbuser = zensur;
$dbpass = zensur;
$dbname = zensur;

$connection = mysql_connect($host,$dbuser,$dbpass);
$db = mysql_select_db($dbname,$connection);


$name = $_POST[username];
$pass = $_POST[password];
$pass_conf = $_POST[pass_conf];
$email = $_POST[email];
$ip = $_POST[ip];


if($name == false || $pass == false || $pass_conf == false || $email == false){
echo "Bitte Trage alles Richtig ein";
};

if($pass != $pass_conf){
echo "Die passwörter stimmen nicht!";
}else {
$connection = mysql_connect($host,$dbuser,$dbpass);
$db = mysql_select_db($dbname,$connection);
$sql = "INSERT INTO user(username,passwort,email,ip) VALUES($name, $pass, $email, $ip)";
$result = mysql_query($sql);
echo "Danke für die anmeldung";
};

?>
regi.php
PHP:
<?php
$ip = $_SERVER[REMOTE_ADDR];
?>

<form name="reg" action="do_reg.php" method="post">
Username: <input type="text" name="username" align="middle"><br>
Password: <input type="password" name="password" align="middle"><br>
Confirm:<input type="password" name="pass_conf"><br>
<input type="hidden" name="ip" value='<?php echo $ip ?>'>
<input type="submit" value="Registrieren">
</form>

sql:
Code:
CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `username` varchar(20) NOT NULL default '',
  `password` varchar(50) NOT NULL default '',
  `email` varchar(40) NOT NULL default '',
  `ip` varchar(20) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Wisst ihr was daran falsch sein kann?
MFG
 
Zuletzt bearbeitet:

E

ekeih

Guest

AW:
PHP:
Was ist falsch ?[/b]

Auf den ersten Blick fällt mir jetzt erstmal auf, dass du dich zweimal mit dem selben Benutzer zur Datenbank verbindest ohne die Verbindung zwischendurch zu beenden. Da könnte ich mir vorstellen, dass das so nicht funktioniert.
[php]$connection = mysql_connect($host,$dbuser,$dbpass);
$db = mysql_select_db($dbname,$connection);
Das reicht einmal.


PHP:
$name = $_POST[username];
$pass = $_POST[password];
$pass_conf = $_POST[pass_conf];
$email = $_POST[email];
$ip = $_POST[ip];
Jenseits deiner Frage würde ich dir mal einen Blick ins PHP-Manual über Sicherheitsabfragen bei der Formularauswertung empfehlen. "htmlspecialchars" wäre hier ein möglicher Suchbegriff ;) In deiner jetzigen Version kann der Benutzer dir jede Menge PHP- oder Javascriptcode über dir Formularfelder unterjubeln. Entsprechende "Programmiersprachenbefehle" können aber per PHP gefiltert werden.
Für dich zu Hause spielt das erstmal keine Rolle, aber wenn du das Skript von anderen Leuten benutzen lässt, musst du immer davon ausgehen, dass sie "böse" sind ;) Nur als Tipp am Rande.

PHP:
$_SERVER[...]
Soweit ich weiß wird da auch aus Sicherheitsgründen von abgeraten. Die genaue Begründung kann ich dir da aber nicht nennen.


Ich hoffe du verzeihst mir, dass sich meine Antwort nicht "nur" auf deine Frage bezieht...ich will dir nur helfen;)

lg
ekeih


EDIT:

PHP:
if($name == false || $pass == false || $pass_conf == false || $email == false){
echo "Bitte Trage alles Richtig ein";
};

if($pass != $pass_conf){
echo "Die passwörter stimmen nicht!";
}else {
$connection = mysql_connect($host,$dbuser,$dbpass);
$db = mysql_select_db($dbname,$connection);
$sql = "INSERT INTO user(username,passwort,email,ip) VALUES($name, $pass, $email, $ip)";
$result = mysql_query($sql);
echo "Danke für die anmeldung";
};
Achja, wenn der Benutzer die Passwörter korrekt eingibt, aber die Passwörter übereinstimmen, wird der else-zweig trotzdem ausgeführt.
 
Zuletzt bearbeitet von einem Moderator:
AW:
PHP:
Was ist falsch ?[/b]

Hallo,

ohne jetzt weiter bis ganz nach unten zu schauen, sollten die Daten in einfache Anführungszeichen gesetzt werden, da es ja Strings sein sollen.

[COLOR=#000000][COLOR=#0000bb]$host [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]'localhost[/COLOR][COLOR=#007700]'; 
[/COLOR][COLOR=#0000bb]$dbuser [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]'zensur[/COLOR][COLOR=#007700]';
[/COLOR][COLOR=#0000bb]$dbpass [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]'zensur'[/COLOR][COLOR=#007700];
[/COLOR][COLOR=#0000bb]$dbname [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]'zensur'[/COLOR][COLOR=#007700];
[/COLOR][/COLOR]
Gute Sites zum Nachschlagen und Lernen von PHP ist[INDENT][URL="http://selfphp.de/"]SELFPHP[/URL], insbesondere das [URL="http://selfphp.de/praxisbuch/index.php"]PHP 5 Praxisbuch[/URL] ,
[URL="http://www.php.de/"]php.de - das Deutsche PHP-Forum[/URL] und natürlich
[URL]http://www.php.net/[/URL] 
[/INDENT]Bei [URL="http://openbook.galileocomputing.de/php_pear/index.htm#_top"]Galileo gibts das OpenBook Pear PHP[/URL], damit mensch das Rad nicht jedesmal neu erfinden muß.

Im Übrigen wäre das Posten der Ausgabe der Fehlermeldung ganz hilfreich ;)

Du kannst die Ausgabe von Fehlermeldungen global in der php.ini steuern oder direkt am Anfang Deines Skripts mittels[INDENT]error_reporting(E_ALL); bzw. ini_set ('error_reporting', E_ALL);
[/INDENT]anschalten.

Hoffe, dass Dir das hilft.

Viel Spaß und Erfolg beim PHP lernen!

Gruß
Andreas
 
Zuletzt bearbeitet:
M

Moppelito

Guest

AW:
PHP:
Was ist falsch ?[/b]

Hey,
also mir fallen da Spontan nur zwei Dinge auf:
[php]if($name == false
Was soll false sein? Ist das ein Placeholder oder steht das wirklich so da? Denn es aufgrund fehlender '' kein String und als false/true frage ich mcih wie eine Variable falsch sein kann? Da müsstest du schon definieren z.B. Wenn Anzahl Buchstaben in Name kleiner 5 oder so...

Noch dazu möchte ich dich direkt mal auf die sicherheit deines Skriptes Hinweisen, denn du solltest $name = $_POST[username]; usw. mithilfe von htmlspecialchars()
oder htmlentities() die Sonderzeicvhen aus SÄMTLICHEN auch dem IP input "entschärfen"
Sonst könnte z.B. jmd. Fremde MYSQL befehle bei dir ausführen und so datensätze ausgeben/löschen/ändern/erstellen usw...

Hoffe es hilft dir ein wenig
MFG Moppelito
 

Taharkas

Noch nicht viel geschrieben

AW:
PHP:
Was ist falsch ?[/b]

Zuerst ein kleiner Hinweis.
"Geht nicht" ist eine sehr magere Aussage zu einem Problem. Je genauer die Problembeschreibung ist, desto schneller und besser bekommst Du Antworten zu Deinem Problem. 

Ein paar Sachen sind ja bereits genannt worden:

Grundsätzlich sollte alles was Strings sind, in Hochkommata oder Anführungszeichen stehen. 
Also würde aus:
[php] 
$host = localhost;
$dbuser = zensur;
$dbpass = zensur;
$dbname = zensur;
z.B. folgendes werden:
PHP:
$host = 'localhost';
$dbuser = 'zensur';
$dbpass = 'zensur';
$dbname = 'zensur';
Dann ist selbstredend die ungefilterte Übername der Benutzereingabe ein Problem. Dazu könntest Du Dir mal die Filterfunktionen von PHP anschauen.

In Deinem Formular hast Du
HTML:
Password: <input type="password" name="password" align="middle"><br>
Das "align=middle" macht man nicht mehr. Hierzu bietet sich normalerweise CSS an. Bis auf wenige programmierbedingte Ausnahmen sollte man die Strukturierung (HTML) von der Formatierung (CSS) sauber trennen.


Dann sehe ich
PHP:
if($name == false ||
usw.
Günstiger ist es auf den Inhalt zu prüfen, indem Du es z.B.so schreibst:
PHP:
if(empty($name) || empty($email)
usw.


In Deinem SQL-Query steht:
PHP:
$sql = "INSERT INTO user(username,passwort,email,ip) VALUES($name, $pass, $email, $ip)";
...auch hier gehören Strings entsprechend behandelt.
PHP:
$sql = "INSERT INTO user(username,passwort,email,ip) VALUES('$name', '$pass', '$email', $ip)";
Desweiteren könnte man hier mit Prepared Statements arbeiten. Das ist ein weiter Schritt in Richtung Sicherheit.

In Deinem Fall bietet es sich an auch mal das Thema Sessions und Cookies zu betrachten. Vielleicht nimmst Du Dir auch mal ein fertiges Loginscript () und arbeitest das von oben nach unten durch und versuchst zu verstehen was in dem Script gemacht wird.

mfg
Taharkas
 
Zuletzt bearbeitet:

saila

Moderatorle

AW:
PHP:
Was ist falsch ?[/b]

Hi,

falsch an deinem Script ist im Grunde nichts. Der eigentl. Fehler liegt beim Schreiber des Scripts. Dieser sollte sich einmal die Zeit nehmen und entweder die Grundlagen von PHP per Buch oder über das PHP-Manual bei php.net anzueignen.

Es ist schon ein fragwürdiges Unterfangen, etwas zu tun, von dem man keine Ahnung noch Wissen hat. Das würde ja gleich kommen, als wolltest du ohne fachlichen Hintergrund an deinem Auto und zwar am Motor rumzuschrauben. Würdest du in deiner Selbsteinschätzung das tun wollen mit dem was du an Kenntnissen dazu hast? Und die gleiche Frage stellt sich auch zu diesem Thema - was willst du tun, wenn du keine Ahnung von dem hast, was du da tun willst?

Dir hier die fehlenden Stücke abholen?! Auf keinen Fall!

Du bist sogar zu faul den Thread zu lesen, welcher bei mir in der Signatur enthalten ist. Unglaublich.......
 
AW:
PHP:
Was ist falsch ?[/b]

Hi Saila,

[U][B][I]zuck[/I][/B][/U] hat doch geschrieben, dass er [B]gerade erst anfängt[/B] mit PHP.
Es ist sein [B]erstes [/B](!) Posting hier in diesem Forum.

Wahrscheinlich hat er keine guten Bücher zu Hause und nicht die richtigen Anlaufstellen - sprich Websites - im Internet gekannt.

:uhm: Ich versteh Deine Reaktion also nicht so ganz. :uhm:
Deine Signatur inklusive Link taucht doch das erste Mal in diesem Thread auf, oder hab' ich was überlesen? 
Wie sollte er also an Deinen Link kommen und woher willst Du wissen, dass [U][B][I]zuck [/I][/B][/U]zu faul zum lesen ist? *kopfkratz

Alle, die sich mit PHP auskennen, wissen doch, dass in dem Skript viel mehr im argen liegt und es mehr als ein paar Stücke sind, die fehlen, damit es funktioniert - und wir kennen auch die Probleme u.a. mit [URL="http://de.wikipedia.org/wiki/SQL-Injection"]SQL-Injections[/URL]. 

Aber das braucht einen [B]Anfänger [/B]( erstes Posting hier ! ) doch noch nicht zu kratzen, der erst einmal die grundlegenden Spracheigenschaften lernen muß / sollte.

Dass diese Basics fehlen, sieht mensch doch schon daran, dass [U][I][B]zuck[/B][/I][/U] die per Formular abgesendeten Daten nicht mit Daten aus der Datenbank vergleicht - wie mensch es normalerweise für ein Login täte - sondern sie einfach in die Datenbank hineinschreiben will.

@[U][I][B]zuck[/B][/I][/U]: 

[LIST]
[*] Fang' am Anfang an und beschäftige Dich erst einmal mit einfacheren Sachen wie Variablen, Kontrollstrukturen, Funktionen, Files, etc.
[*]Die in den vorhergehenden Antworten geposteten Websites sind allesamt gute Anlaufstellen, dennoch  geht für [B]mich [/B]nix über ein gedrucktes Buch.
[*][URL="http://www.terrashop.de/suche.php?begriff=PHP&typ=fulltext"]Da Weihnachten vor der Tür steht, wären diese Bücher bzw. Videoworkshops evtl. ein guter Punkt auf Deiner Geschenkliste.[/URL]
[*]Mir hat auch die Analyse [B]gut[/B] dokumentierter Skripts Anderer sehr geholfen. Eine gute Anlaufstelle war damals für mich , besonders die [URL="http://www.hotscripts.com/category/php/tutorials-tips/"]Tips & Tutorial Section[/URL].
[*][URL="http://www.phptoys.com/e107_plugins/content/content.php?content.35"]Ein [B]Tutorial [/B]zur user authentification [B]ohne[/B] Datenbank, sondern per File, findest Du bsp. hier[/URL].
[*]Ich finds klasse, dass Du PHP lernen willst und hoffe, dass Du Ausdauer hast und viel Spaß beim Proggen haben wirst !
[*]Ich drück' Dir die Daumen und hoffe, dass mein Posting Dir helfen und Dich ermuntern wird, weiter zu Lernen.
[/LIST]
Grüße
Andreas

PS:
Wer nicht fragt bleibt dumm und es gibt keine dummen Fragen, nur blöde Antworten.
 

saila

Moderatorle

AW:
PHP:
Was ist falsch ?[/b]

@AndreOve,

deine Begründungen ändern an den Fakten rein nichts. In diesem Forenbereich ist der 2. Thread der besagte in der Signatur inkl. aller ff. Links.

Und schön, dass du so großes Verständnis hast :)
 
AW:
PHP:
Was ist falsch ?[/b]

@saila

Ups, bin über "neue Forenthemen" auf diese Frage gestossen und war gar nicht im übergeordneten Forenbereich :lol:

Dein Thread hat in der Tat viele sehr gute Hinweise und wahrscheinlich gehts Dir als Admin schon auf die Nerven, dass Menschen nicht einmal die mit "WICHTIG!" markierten Threads lesen ( können oder wollen ) :D

Was 'mal wieder mehr beweist: wer lesen kann, ist klar im Vorteil !

Ich denke mal, in den Code-Snippets sind so viele Fehler drin, dass das Thema auf "closed" gesetzt werden kann :rolleyes:

Gruß
Andreas
 

saila

Moderatorle

AW:
PHP:
Was ist falsch ?[/b]

Warum schliessen? Macht auch keinen Sinn. Der Thradverfasser kann sich zum einen erneut im lesen üben und zum anderen auch vielleicht seine eigenen Lösungsansätze mitteilen. Und ist im letzteren Fall auch einmal Grundlagenwissen vorhanden, so kann man ja immer noch unterstützend wirken.

Nerven - nö nervend ist es nicht. Es ist vielmehr dieses - wie soll ich es beschreiben, ohne jemandem auf die Füße zu latschen - naja, diese ewige wiederkehrende Lesefaulheit. Oder - ach stell ich mal eine Frage, weil ich gerade keine Lust habe mich damit selbst zu beschäftigen.......

Der Grund ist recht simple. Es wird das Interesse in einem geweckt. Nun beginnt man sich ja damit auseinander zu setzen. Und da wir uns ja im www befinden, ist in erster Linie eine Suchmaschine gefragt. Tja und da gibt es auch tatsächlich entsprechende Erebnisse, in welchen man näheres erfahren kann. Und da es sich ja um PHP handelt, könnte man ja auch php als Suchbegriff auf der entsprechenden Suchmaschinenseite eingeben. Spätestens dann ist das Ergebnis der Seite des PHP-Manual mit an oberster Stelle. Tja und da könnte man die Einführung und Mehr lesen/ und lernen bzw. mehr lernen.
Aber nö - da kommen solche Fragen im Forum an. [b]Zuck[/b] wird sich da schon etwas dabei gedacht haben (hoffe ich). Doch selbst dann sollten auch wenn nur im Ansatz Grundlagen ersichtlich sein und da ist es mir egal, ob das der 1 oder was auch immer wievielte Beitrag ist und zum Glück gibt es ja andere User wie dich, die Verständnis zeigen (was ich auch könnte, aber nicht mehr möchte ;) ).
 

zuck

Noch nicht viel geschrieben

AW:
PHP:
Was ist falsch ?[/b]

danke für alle antworten....

sorry das ich nicht direkt antworten konnte....
des weiteren werde ich bald ein buch bekommen ;)


LG
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.620
Beiträge
1.538.374
Mitglieder
67.544
Neuestes Mitglied
janusbarman
Oben