ChatKult FORUM · Next 1.0.8
Forenübersicht » [ Technik & Multimedia ] » An Voyeur oder andere PHP-Kenner :-)

An Voyeur oder andere PHP-Kenner :-)

Hallo Voyeur, ich habe im Support-Forum gesehen, daß du dich mit PHP auskennst, daher die persönliche Anrede an dich ;-) Aber jeder andere kann mir natürlich auch gern helfen ;-)

Also, ich habe folgendes Problem (nebenbei: ich bin kein Profi, wie man vielleicht merken wird):

Ich möchte per Formular einen User in einer MySQL-Datenbank anlegen mit Namen und Paßwort. Das Paßwort soll erst auf Richtigkeit überprüft werden und dann erst erfolgt der Eintrag.

Mein Formular sieht etwa so aus -

<form action="admin_user_add.php" method="post">
<table align=center border=0 cellspacing=0 cellpadding=5 width=80%25>
<tr>
<td width=15%25>Name:</td><td><input name="name" type="text" value="" size="50" class="eingabe"></td>
</tr>
<tr>
<td width=15%25>Passwort:</td><td><input name="password" type="password" value="" size="50" class="eingabe"></td>
</tr>
<tr>
<td width=15%25>Passwort wiederholen:</td><td><input name="passwordconfirm" type="password" value="" size="50" class="eingabe"></td>
</tr>
<tr>
<td colspan=2 align=center><input type="submit" value="Absenden" class="eingabe"> « » <input type="reset" value="Reset" class="eingabe"></td>
</tr>
</table>
</form>


Es werden also an das Script die Variablen $name, $password und $passwordconfirm übergeben.

Das Script sieht an der entsprechenden Stelle so aus:

### Name eingetragen, Paßwort-Überprüfung ###

if(!$name || !$password || !$passwordconfirm || $password != $passwordconfirm)
{
echo ("Du hast keinen Namen oder kein Passwort eingetragen oder das erste Passwort stimmt nicht mit dem zweiten überein!");
}

else
{
### Namensüberprüfung ###

$read_user="SELECT name FROM mdb2_user WHERE name = %27$name%27";
$result = mysql_query($read_user);
$num=mysql_num_rows($result);

if($num)
{
echo ("Der Name ist schon vorhanden!");
}

else
{

### Paßwort verschlüsseln###

$password = md5($password);

### Daten werden in die Datenbank eingetragen ###

$add_user = "INSERT INTO mdb2_user VALUES(%27$name%27,%27$password%27)";
if($add_user_result=mysql_query($add_user))
{
echo ("Danke, der User wurde in die Datenbank eingetragen!");
}
else
{
echo mysql_error();
}
}
}


Das Problem ist nun: Selbst wenn ich einen Namen und beide Paßwortfelder ausfülle (mit gleichlautendem Paßwort), kommt die Meldung "Du hast keinen Namen oder kein Passwort eingetragen oder das erste Passwort stimmt nicht mit dem zweiten überein!" - ich finde den Aufbau der Scriptüberprüfung, ob die Paßwörter übereinstimmen, eigentlich logisch, aber dennoch muß dort ja ein Fehler sein. Kann mir jemand helfen?

Warum ich es in dieses Forum schreibe und nicht eine PHP-Gemeinde frage? Die Antworten dort sind mir meist zu fachmännisch, selbst wenn ich darauf hinweise, kein Profi zu sein - hier erhoffe ich mir eine verständlichere Antwort ;-)

Danke schon einmal im voraus!

*Es grüßt* Abalone
Nun, so rein grob wäre jetzt die Ursache in dem Bereich (if, else).

if(!$name || !$password || !$passwordconfirm || $password != $passwordconfirm)
{
echo %27erfolgreiche Meldung sollte da stehen.%27;
}
else
{
echo %27hier dagegen sollte die Fehlermeldung stehen%27;
}



Ich kann jetzt noch nicht intensiver damit beschäftigen, da ich mich noch auf der Arbeit befinde, aber sobald ich heute abend Zeit habe, gugg ich es mir nochmal an. :))
Wollte erstmal noch anmerken, daß, wenn ich die Paßwortüberprüfung rauslasse, das Script reibungslos funktioniert - es muß also daran liegen.

@ froggy:
Nun, so rein grob wäre jetzt die Ursache in dem Bereich (if, else).

if(!$name || !$password || !$passwordconfirm || $password != $passwordconfirm)
{
echo %27erfolgreiche Meldung sollte da stehen.%27;
}
else
{
echo %27hier dagegen sollte die Fehlermeldung stehen%27;
}

Aber ich frage doch in der if-Abfrage nach dem, was NICHT stimmt, nach den Fehlern - also: wurde KEIN Name, KEIN Paßwort übergeben oder stimmt das Paßwort NICHT mit dem zweiten PW überein - wenn dem so ist, kommt doch zunächst die FEHLERMELDUNG, weil doch all die Punkte positiv erfüllt sein müssen ... ??
Hm, aber du bringst mich auf eine Idee - ich kehre das alles jetzt mal um, mal sehen, ob%27s dann funzt, ich melde mich dann wieder ;-)

Achso, trotzdem schonmal danke, Grünling *g*
HimmelHerrGottSakranochemol! :-grummel

Jetzt sieht mein Script so http://www.lolope.de/misc/php.txt aus, und es funzt immer noch nicht, es meldet immer noch, auch wenn alles richtig ausgefüllt ist, daß das erste PW nicht mit dem zweiten übereinstimmt :-aua

*verzweifelt allmählich* Abalone
Die if/else-Abfrage arbeitet bei mir fehlerfrei, ich denke mal dass die Variablen ($name, $password, $passwordconfirm) leer sind. Wie holst Du die?

$password = $_POST["password"];
...
Übrigens... in php.txt fehlen mysql_connect und msql_select_db... hier solltest Du auch mit || die "Fehlerbeschreibung" arbeiten, damit Dir nix entgeht...
Eieiei, du siehst, Voyeur, du hast es hier mit einer Autodidaktin zu tun ;-) Ich dachte, es reicht, ein Formular zu erstellen, dessen input-Felder die Namen tragen, die dann auch die Variablen haben werden - verständlich? ;-) Bisher hat es bei mir stets funktioniert, wenn ich gesagt habe: Formular - input name ="nick" -> Script INSERT blabla VALUES(%27$nick%27) ... stark vereinfachtes Beispiel ;-) Da war nix mit "Variablen holen" oder ähnlichem ...
Auf der sicheren Seite befinde ich mich also, wenn ich stets alle Variablen aus dem Formular abhole, wie du es geschrieben hast, ja?
Also wenn ich sage:

$password = $_POST["password"];
$passwordconfirm = $_POST["passwordconfirm"];
$name = $_POST["name"];


dann sollte das Script alle Variablen mit 100%25iger Gewissheit finden und verarbeiten, ja?

Ich frage mich dann nur, warum es bisher ohne dieses "Holen" der Variablen funktioniert hat?

*Hm, lecker, anscheinend wieder etwas dazugelernt* Abalone :-)
Die php.txt ist nicht die komplette Datei - in der Original-Datei wird die Datenbank angesteuert und am Ende wieder verlassen :-)
Voyeur, ick könnt dir knutschen!!

Ich lasse jetzt alle Variablen "abholen" und setze wieder die erste Version des Scripts ein - und es klappt wunderbar!

*freufreufreu und DANKE* Abalone
*grins* Keine Ahnung... bin in der gleichen Lernsituation wie Du. :-)

Ich gehe halt frech davon aus, dass zu Anfang eines PHP-Skripts zunächst NICHTS definiert ist und fange an, es zu definieren. Mein Masochismus geht in letzter Zeit so weit, dass ich perl nur noch als "perl -w" aufrufe, um auch mal anständigen Code zu schreiben.
In dem Zusammenhang dürfte aber http://www.php.net/manual/de/security.registerglobals.php interessant sein. ;-)

Das %27|| die "lala";%27 würde ich mir allerdings angewöhnen - ich finde es ganz angenehm zu wissen, dass ein Skript im Fehlerfall abbricht und mir sagt warum, anstatt mit falschen Werten weiterzuarbeiten. ;-)
Hm, danke für den Link! Ist für die jetzige Seite vielleicht nicht ganz so wichtig (zu unbedeutend und uninteressant für "Hacker" ;-)), aber für zukünftige Projekte sicher nützlich.

*wie einfach wäre es, könnte man auf das Gute im Menschen vertrauen* Abalone :-)
Schäm Dich mal... RTFM is immer nützlich. *frinsels*
Es ist nur so abschreckend dick, und dann sind da noch so viele schlaue Kommentare :-/ Und Programmiersprachen sind eigentlich nicht gerade mein Ding, ich schrecke gern schnell zurück, wenn scheinbare Hieroglyphen à la $urlsearch[]="/([^]_a-z0-9-="%27/])((https?|ftp)://|www.)([^
()*^$!`"%27|[]{};<>]*)/si"; geballt auftreten :-p Heißt: ich muß mir vieles fünfmal durchlesen, bis ich es verstanden habe, das nervt ziemlich schnell. Darum wähle ich lieber den Weg: ein funktionierendes Script nehmen, anschauen, rumpfriemeln und schauen, was passiert ;-), und dann versuchen, aus dem zusammengestückelten "Wissen" etwas eigenes zu kreieren - muß ja nicht gleich perfekt sein, ich brauche ja auch noch Spielraum, um mich weiter entwickeln zu können ;-) hehe

[edit]Vergessen: in SELFPHP schau ich dann doch öfter mal rein ;-)
Abalone, an vermeindliche Hieroglyphen gewöhnt man sich schnell. Ich schreck auch immer erstmal zurück. In meiner Zwischenprüfung hab ich alle Aufgaben mit Quelltexten die man interpretieren musste ans Ende gepackt. Wenn du dann aber etwas 100%25 duchblickst und es selberschreiben kannst ist doch das Gefühl hinterher viel befridiegender als wenn du an etwas bestehendem rumfriemelst ohne genau zu wissen was man macht, oder? :-)
(weiss)ist doch das Gefühl hinterher viel befridiegender als wenn du an etwas bestehendem rumfriemelst ohne genau zu wissen was man macht, oder?(/weiss)

Jein ;-) Vorher ahne ich vielleicht nur, was etwas zu bedeuten hat - aber hinterher WEIß ich ja, was ich gemacht habe - das Ergebnis zeigt es mir ja *g*
Nein, hast schon recht, von der Pike auf ist natürlich stets der bessere Weg - aber ... *fgfg*
Es ist nur so abschreckend dick, und dann sind da noch so viele schlaue Kommentare :-/
Das ist allerdings wahr... zudem ist es gar fürchterbar strukturiert.

/([^]_a-z0-9-="%27/])((https?|ftp)://|www.)([^
()*^$!`"%27|[]{};<>]*)/si

Wer sich so eine RE ausdenkt, gehört erschlagen. *gg* (Ports? / quoten? TLD-Regeln? Hosts die nicht www heissen?)

:-)
Das war ein Auszug aus dem functions-script des Woltlab Burningboards - komplett lautet die Funktion

-- Moment, irgendwie zerhaut%27s immer das Forum, ich pack%27s in eine Textdatei ---
Huchala... den Einwurf "Hosts" nehme ich bei näherer Betrachtung zurück und schiebe den Einwurf "quoten" mal auf die Forensoftware hier, die IIRC keine Backslashes mag. *gg*
http://www.lolope.de/misc/brei.txt

Ich verstehe nur Bahnhof, aber du bist vielleicht ein wenig mehr zufriedengestellt? ;-)
Geil, das ist also PHP? Ich hab damit ja noch nicht zu tun gehabt. Sieht interessant aus. *g*
darf ich auch mal s-)

soviel ich weiß wird ein kommentar so geschrieben :

//######## BLABLA #########

und ned so :

########## blabla #########


hehe s-)

wenns dann doch nicht daran gelegen haben sollte schick mir ne mail : info@labercity.de dann kümmer ich mich drum ... heut hab ich keine power mehr weil die nacht durchgemacht ;o)


GZ
Wahooka