Entwickler-Ecke

Internet / Netzwerk - Daten an PHP-Script übergeben


Delete - Mi 17.02.10 14:23
Titel: Daten an PHP-Script übergeben
Hallo
habe jetzt mal ein Php Script gemacht des so aussieht:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
<?PHP
require_once("config.php");

if(isset($_POST['name'])){
    $tbl_scriptmaker_users = $_POST['stufe'];
    mysql_query("INSERT INTO $tbl_scriptmaker_users (userid, username, passwort, vorname, nachname, straße, plz, ort, gebdatum, Email) VALUES ('$_POST[userid]', '$_POST[username]','$_POST[passwort]','$_POST[vorname]','$_POST[nachname]','$_POST[straße]','$_POST[plz]','$_POST[ort]','$_POST[gebdatum]','$_POST[Email]')");
} //ende if
mysql_close();
?>

hab auch noch ne config
nur wie übergib ich die daten von den editfeldern bei delphi an das PhPp script?
lg


Moderiert von user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Do 18.02.2010 um 23:16
Moderiert von user profile iconNarses: Titel geändert.


Delete - Mi 17.02.10 15:38

kan mir den keiner helfen?


jfheins - Mi 17.02.10 15:51

Benutze die Indys, bzw. im speziellen TIdHTTP.Post() ( http://www.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=!!OVERLOADED_Post_TIdCustomHTTP.html )
Beispiele solltest du auch welche finden (wenn du suchst - z.B. nach "idhttp post beispiel")


Delete - Mi 17.02.10 15:53

ich such ja schon die ganze zeit und ich benutze tidhttp


Xentar - Mi 17.02.10 16:05

Hier gilt immernoch, pushen erst nach 24 Stunden..
Suche -> IdHHTP Post -> 3. Thread: http://www.delphi-forum.de/viewtopic.php?t=96469&highlight=idhttp+post
Da steht irgendwo in der Mitte, wie das im Prinzip funktioniert.


jfheins - Mi 17.02.10 16:06

Schön ... also ich komme zum Beispiel auf diesen Post: http://www.delphi-forum.de/topic_Problem+mit+IdHTTPPost_4231,0.html - sieht für mich eigentlich nach einem schönen kleinen netten Beispiel aus ;)


Blackheart666 - Mi 17.02.10 16:07

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
kan mir den keiner helfen?

Pushen ist erst nach 24 Stunden erlaubt, aber durch meinen Hinweis steht dein Thread wieder ganz oben. :wink:


Delete - Mi 17.02.10 16:13

oh sorry wusst ich nicht
Kannst du mir vllt. helfen??


platzwart - Mi 17.02.10 16:18

Das war ja schon wieder ein Push...


Xentar - Mi 17.02.10 16:41

Hast du dir meinen Link schon angesehen?

Außerdem hattest du vor 2 Wochen schonmal ein Problem mit Post, und damals laut deiner Aussage ans Laufen bekommen, wo ist also der Unterschied zu dem aktuellen Problem?
http://www.delphi-forum.de/viewtopic.php?t=97589


Delete - Mi 17.02.10 17:00

Weil des andere mein Mail Client war.
Und das ist jetzt für mein Registrierunggsformular.
Ja dein Link hab ich mir angesehen werde aber daraus nicht schlau
lg


Xentar - Mi 17.02.10 17:58

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Weil des andere mein Mail Client war.
Und das ist jetzt für mein Registrierunggsformular.

Das ändert doch nichts an der Tatsache, WIE die Daten übergeben werden..? Oder irre ich mich?
Sollen wir den Quellcode von DEINEM Mail Client nun so umschreiben, dass er auch auf dein neues Problem passt? Theoretisch musst du doch nur die Post-Bezeichner sowie die Namen der Edit Felder anpassen.


Delete - Mi 17.02.10 18:03

das ist mein php script:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<?PHP
require_once("config.php");

if(isset($_POST['name'])){
    
    mysql_query("INSERT INTO scriptmaker_users (username, passwort, vorname, nachname, strasse, plz, ort, gebdatum, Email) VALUES ('$_POST[username]','$_POST[passwort]','$_POST[vorname]','$_POST[nachname]','$_POST[strasse]','$_POST[plz]','$_POST[ort]','$_POST[gebdatum]','$_POST[Email]')");
} //ende if
mysql_close();
echo("Erfolgreich Registriert");
?>


und das mein code für den button:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var
  data: TIdMultiPartFormDataStream;
begin
  data := TIdMultiPartFormDataStream.Create;
  try
    { add the used parameters for the script }
    data.AddFormField('username', username.Text);
    data.AddFormField('passwort', passwort.text);
    data.AddFormField('vorname', vorname.text);
    data.AddFormField('nachname', nachname.text);
    data.AddFormField('strasse', strasse.text);
    data.AddFormField('plz', plz.text);
    data.AddFormField('ort', ort.text);
    data.AddFormField('gebdatum', gebdatum.text);
    data.AddFormField('Email', Email.text);


    { Call the Post method of TIdHTTP and read the result into TMemo }
    Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/addons/login.php', data);
   finally
    data.Free;

wen ich des programm ausprobiere und den button drücke wird im memo nur Erfolgreich registriert ausgegeben, aber in der MySql Tabelle wurde nichts gespeichert.
Was ist daran falsch??
lg


Xentar - Mi 17.02.10 18:12

Na endlich, wir kommen der Sache näher..

Das ganze hat aber nichts mehr mit Delphi zu tun, sondern ist ein Problem in deinem PHP Skript.
Nun schau dir mal bitte die Bedingung an, wann etwas in die Datenbank geschrieben werden soll. Riichtig, wenn "name" gesetzt ist. In den Postdaten gibt aber nur username und vorname. Also: Korrektes Verhalten. :)


Delete - Mi 17.02.10 18:23

aber der delphi teil ist schon mal richtig oder?

Edit:
Hab mir mal das Php Script angeschaut aber ich kann den Fehler nicht finden.
Was meinst du mit Name?


platzwart - Mi 17.02.10 18:46

Das ist jetzt nicht dein Ernst?!?!?


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<?PHP
require_once("config.php");

if(isset($_POST['name'])){
    
    mysql_query("INSERT INTO scriptmaker_users (username, passwort, vorname, nachname, strasse, plz, ort, gebdatum, Email) VALUES ('$_POST[username]','$_POST[passwort]','$_POST[vorname]','$_POST[nachname]','$_POST[strasse]','$_POST[plz]','$_POST[ort]','$_POST[gebdatum]','$_POST[Email]')");
} //ende if
mysql_close();
echo("Erfolgreich Registriert");
?>




Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var
  data: TIdMultiPartFormDataStream;
begin
  data := TIdMultiPartFormDataStream.Create;
  try
    { add the used parameters for the script }
    data.AddFormField('username'username.Text);
    data.AddFormField('passwort', passwort.text);
    data.AddFormField('vorname', vorname.text);
    data.AddFormField('nachname', nachname.text);
    data.AddFormField('strasse', strasse.text);
    data.AddFormField('plz', plz.text);
    data.AddFormField('ort', ort.text);
    data.AddFormField('gebdatum', gebdatum.text);
    data.AddFormField('Email', Email.text);


    { Call the Post method of TIdHTTP and read the result into TMemo }
    Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/addons/login.php', data);
   finally
    data.Free;


Delete - Mi 17.02.10 18:56

ja aber wen ich oben name stehen hab dan muss ich daraus username machen oder?
aber ich hab doch mehrere felder


Xentar - Mi 17.02.10 19:05

Mal ehrlich, weißt du, was du da tust, oder hast du dir das Skript nur irgendwo zusammenkopiert?

Um es ganz korrekt zu machen, müsstest du abfragen, ob jeder einzelne Parameter vorhanden ist, und erst dann den MySQL Befehl starten.


Delete - Mi 17.02.10 19:07

ne ich hab es mir kopiert
da ich wegen einmal kein php lernen will
Zitat:
ob jeder einzelne Parameter vorhanden ist, und erst dann den MySQL Befehl starten.


wie mach ich das?


platzwart - Mi 17.02.10 19:18

Ich möchte dir dringend abraten, das überhaupt zu machen. Wenn du diese einfache Aufgabe nicht hinbekommst, obwohl du fertigen Quelltext und Hinweise zum Abändern hast, dann bist du ein Sicherheitsrisiko für diese Anwendung. Zumal hier Zugangsdaten unverschlüsselt durch die Gegend geschoben werden (und wie ich erschreckend feststellen musste, kostet der Download für dieses "Tool" auch noch auf deiner Website...).


Delete - Mi 17.02.10 19:19

Ich hab es abgeändert aber es geht trotzdem nicht
und wo kostet der Download was?
welcher Download überhaupst?


platzwart - Mi 17.02.10 19:26

1) Ich meinte dein "Mail-Programm"
2) Wie schauts denn nun nach der Abänderung aus?


Delete - Mi 17.02.10 19:48

ach so ja aber sie sind zufrieden mit dem mail client
jetz sieht es so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var
  data: TIdMultiPartFormDataStream;
begin
  data := TIdMultiPartFormDataStream.Create;
  try
    { add the used parameters for the script }
    data.AddFormField('name', name.Text);
    data.AddFormField('passwort', passwort.text);
    data.AddFormField('vorname', vorname.text);
    data.AddFormField('nachname', nachname.text);
    data.AddFormField('strasse', strasse.text);
    data.AddFormField('plz', plz.text);
    data.AddFormField('ort', ort.text);
    data.AddFormField('gebdatum', gebdatum.text);
    data.AddFormField('Email', Email.text);


    { Call the Post method of TIdHTTP and read the result into TMemo }
    Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/addons/login.php', data);
   finally
    data.Free;


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<?PHP
require_once("config.php");

if(isset($_POST['name'])){

    
    mysql_query("INSERT INTO $scriptmaker_users (name, passwort, vorname, nachname, strasse, plz, ort, gebdatum, Email) VALUES ('$_POST[name]','$_POST[passwort]','$_POST[vorname]','$_POST[nachname]','$_POST[strasse]','$_POST[plz]','$_POST[ort]','$_POST[gebdatum]','$_POST[Email]')");
} //ende if
mysql_close();
echo("Erfolgreich Registriert");
?>


Delete - Mi 17.02.10 20:34

bitte helft mir doch


platzwart - Mi 17.02.10 20:43

*again* Pushen erst nach 24 Stunden...


Webo - Mi 17.02.10 21:10

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
bitte helft mir doch

Mal ein ganz allgemeiner Tipp: Wenn du gleich versuchst 50 verschiedene Einträge zu machen, dann hast du 50 mal so viel Fehlerquellen, als wenn du es erstmal testweise mit einem Eintrag machst. Wenn der nicht funktioniert musst du bei viel weniger Dingen Fehler suchen, als wenn du gleich 50 Einträge machen willst. Wenn dann dieser eine Eintrag funktnioniert, dann kannst du ja die Einträge Stück für Stück erweitern ... aber das nur mal so am Rande !
Gut wäre übrigens auch einen Blick in den allgemeinen Aufbau einer Connection zu MySQL in PHP zu werfen, vllt liegt ja auch da der Fehler begraben :roll: Suche bei Google PHP MYSQL DATENBANK VERBINDEN


Delete - Mi 17.02.10 22:19

Dankeschön Webo
jetz is sie wenigstens verbunden wen ich des Php Script aufrufe und ich kann auch über Php daten eintragen.
Aber wie mach ich es dan das ich sie von Delphi ans Php Script sende?


Xentar - Mi 17.02.10 23:00

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Aber wie mach ich es dan das ich sie von Delphi ans Php Script sende?

Ich versteh die Frage (schon wieder) nicht..
Den Delphi Quellcode hast du doch oben schon?


Delete - Mi 17.02.10 23:23

Ja es ist zum Verzweifeln mit mir
Ja den Quelltext hab ich shcon von delphi
aber für php keinen gefunden
ausser den:

Quelltext
1:
2:
3:
4:
5:
6:
7:
<?php
include("config.php");

mysql_query("INSERT INTO `scriptmaker_users`(`username`, `passwort`, 'vorname`, `nachname`, 'straße', 'plz', 'ort', 'gebdatum', 'Email') VALUES ('username', 'passwort' ,'vorname', 'nachname', 'straße', 'plz', 'ort', 'gebdatum', 'email')");


?>


Xentar - Mi 17.02.10 23:25

Meinste nicht, du solltest dich damit langsam eher an ein PHP Forum wenden? ;)


Delete - Mi 17.02.10 23:29

hm glaub auch
aber eine frage noch.
Bei meinen ersten Php script was chi oben gepostet hab is des schon richtig oder noch nicht ganz?


platzwart - Mi 17.02.10 23:55

Genau das ist doch die Frage für das PHP-Forum... :nixweiss:


Delete - Do 18.02.10 15:23

Soo
Ich hab mir jetzt mal die Arbeit gemacht und in Php ein richtiges Script geschrieben.
Php Script:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
<?PHP
include("config.php");

if ($action == "register")
{
  mysql_query("INSERT INTO scriptmaker_users (username, passwort, aktiviert, vorname, nachname, straße, plz, ort, gebdatum, Email) VALUES ('".$username."', '".$passwort."', '0', '".$vorname."', '".$nachname."','".$strasse."', '".$plz."', '".$ort."','".$gebdatum."', '".$Email."')");
  echo("Erfolgreich Registriert");
}
?>


Delphi Quellcode:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  data: TIdMultiPartFormDataStream;
begin
  data := TIdMultiPartFormDataStream.Create;
  try
    { add the used parameters for the script }
    data.AddFormField('username', Edit1.Text);
    data.AddFormField('passwort', Edit2.text);
    data.AddFormField('vorname', Edit3.text);
    data.AddFormField('nachname', Edit4.text);
    data.AddFormField('strasse', Edit5.text);
    data.AddFormField('plz', Edit6.text);
    data.AddFormField('ort', Edit7.text);
    data.AddFormField('gebdatum', Edit8.text);
    data.AddFormField('Email', Edit9.text);
    data.AddFormField('action''register');


Funktioniert wunderbar.
Wen sich ein user registriert wird er in die DB eingetragen und aktiviert ist er nicht.
Wie mach ich des login?
Da muss ich doch Irgendwie abfragen ob die Userdaten die eingegeben wurden mit der in der Datenbank übereinstimmen oder?
Wie mach ich es wen ich mich einlogg das ich noch ein Feld hab m it user Freischalten und dan ein aktivierungslink an den user verschickt wird??
lg


Edit://
Hab jetzt bei meinen Login Button mal folgendes Eingefügt:

Delphi-Quelltext
1:
2:
if (Edit1.Text) = '238236' then 
Form2.Showmodal;


Ich muss ja jetz woll hier ne if then Abfrage einfügen die Abfrägt ob die Userdaten in der Db existieren und Aktiviert sind oder??
Wie änder ich die If then abfrage oben ab das ich es für zwei felder benutzen kann?


Jakob_Ullmann - Do 18.02.10 15:47

Ich hatte mich gewundert, wieso es funktioniert, weil du hier den Befehl mysql_query verwendest, ohne dich überhaupt mit der Datenbank zu verbinden. Aber vermutlich wird das in der config.php gehandlet, nicht? Vermutlich ist die ja auch kopiert, oder?

Das Login machst du indem du ein <input type="password"> einfügst zusammen mit einem Eingabefeld, dann filterst du mit einer MySQL-Query die Datensätze (was nur einer sein sollte, bzw. keiner bei falschem Passwort), und das kannst du dann anzeigen. Wenn das wirklich sicher sein soll, solltest du Sessions verwenden, außerdem brauchst du einen XSS-Schutz. Die SQL-Abfrage kannst du dir von phpMyAdmin generieren lassen, aber den Rest wirst du hier sicher nicht so einfach rübergeschoben bekommen. Du solltest es entweder lassen oder ein PHP-Buch oder zumindest ein -Tutorial lesen. Grundlagenwissen wirst du dafür nämlich brauchen. Eine Empfehlung habe ich bereits in deinem anderen Thread geäußert.

Programmieren ist mehr als Copy-and-Paste!

Übrigens: Du solltest nicht das Passwort, sondern nur seinen Hash übertragen. Alles andere ist fahrlässig.


Delete - Do 18.02.10 16:04

ja ich verbinde mit der config.php zur Datenbank und nein ich habe die ganze Nacht durchgemacht und Php tutorials Durchgearbeitet.
Wegen Passwort des wird jetzt md5 verschlüßelt ich glaub es is besser.
Nur wegen dem Login nochmal
Kann ich da nicht einfach mit nen Php script ne abfrage machen.
Also das er abfrägt ob user und pw in der datenbank vorhanden sind?


Jakob_Ullmann - Do 18.02.10 16:14

Gut, wenn du dich mit PHP ein wenig auskennst, wird dir die Arbeit mit Arrays ja vertraut sein. Ich werfe einfach mal folgenden Quellcode in die Runde:


C#-Quelltext
1:
2:
3:
4:
5:
6:
<?php
$query = "SELECT * FROM table1 WHERE pw = 'passwd' AND name = $uname";
$res = mysql_query($query);
$data = mysql_fetch_assoc($res);
echo "Willkommen, <b>$data[name]</b>";
?>


Das kannst du auch mit den Indys abholen und dann einfach verarbeiten, das muss nicht einmal eine HTML-Struktur aufweisen. (wie du das abholst, weißt du ja hoffentlich)

Ich glaube übrigens nicht, dass VCL die richtige Sparte dafür ist.


Delete - Do 18.02.10 16:19

Dankeschön jetz hab ihc es fast geschafft.
oha stimmt

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

jetz hab ich aba noch ne frage wegen den button aktivieren
ihr habt gesagt ich muss den user einen link schicken den er anklicken muss welcher link ist das?
ich dacht mir eig,. so das wen ich auf User aktivieren gehe das dan die Ganzen user aus der Db stehen die noch nicht aktiviert wurden und wen ich einen Anklicke sollte mein mail programm kommen passt des so=?
und wie mach ich das der Button nur für Admins sichtbar ist??
lg


Webo - Do 18.02.10 17:03

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
und wie mach ich das der Button nur für Admins sichtbar ist??

Die erste Frage verstehe ich nicht, kann daran liegen, dass ich nicht alles gelesen habe ... aber zur zweiten: Du führst "Benutzerstufen" ein. Da du ja, wie du oben schriebst, php-Tutorials durchgelesen hast, dann werden dir Session-Variablen ja vermutlich etwas sagen. Du könntest dich einloggen, das Skript fragt die Benutzerstufe ab und wenn Benutzerstufe >= Admin ist, dann ist der Button sichtbar. So in etwa ist das zu handhaben.


Jakob_Ullmann - Do 18.02.10 17:41

Das könntest du so machen:


C#-Quelltext
1:
2:
3:
4:
// protected content
echo ( ($name == "admin") && ($pw == "adminpasswort") ) // wenn ...
     ? "<button onclick='javascript:clck()'>Aktivieren</button>" // dann
     : " "// sonst


mit


C#-Quelltext
1:
2:
3:
4:
5:
<script type="text/javascript" language="JavaScript">
function clck() {
  // javascript-code
}
</script>


(oben habe ich den sogenannten ternären Operator verwendet.)

Wobei ich fast glaube, das wäre mit einem Formular einfacher getan, aber im Prinzip geht das so.

Den Aktivierungslink könnte man zum Beispiel so gestalten:


Quelltext
1:
http://www.webspacexx.de/activateusr.php?usrid=22&id2=114058f5e                    


wobei id2 irgendwas ist, was generiert wurde. Das verschickst du an den User und speicherst es ab. Damit stellst du sicher, dass du den User wirklich nur über den Aktivierungslink aktivieren kannst. Beim Generieren solltest du Zufallswerte mit einfließen lassen, denn bloße security by obscurity ist immer unangebracht, da sich ja jeder Zeit nehmen kann, den Algorithmus zu knacken (und wie schnell das geht, kannst du leicht sehen, wenn du mal schaust, wie oft Premiere in letzter Zeit geknackt wurde). usrid ist dann die ID des Users, der aktiviert wird. Die Werte kannst du auslesen mit


C#-Quelltext
1:
2:
3:
4:
<?php
$usrid = $_GET["usrid"];
$id2   = $_GET["id2"];
?>


Delete - Do 18.02.10 17:51

Ok Dankeschön an alle die Soviel geduld mit mir hatten ^^

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

ich bins nochmal
hat doch nich so geklappt
wollte es so machen das wen ein user seine daten bei login eingibt
und auf login button klickt das die daten über php gesenddet werden und geprüft ob sie in de r mysql db da sind wen ja dan soll er sich einloggen können
Ich dacht mir ich sende die daten genauso wie beim registrieren ans php script
und mach mir nur anders php script des die db durchsucht
aber wen ein ok zurück kommt von db das user da is wie nimm ih des wieder zurück das er auch eingelogg wird??

Hier mein php code:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
<?php
include("config.php");
$username = $user_login;
$passwort = md5($user_pw);
$result = mysql_query("SELECT passwort FROM scriptmaker_users WHERE username='".$username."'");
$row = sql_fetchrow($result)
if ($row["passwort"] != $passwort) 
{
  echo("Fehler beim Login");
}
else
{
  echo("Erfolgreich Eingelogt");
}
?>


Xentar - Do 18.02.10 21:44

http://phpforum.de/forum/


Delete - Do 18.02.10 21:56

den php teil hab ihc ja schon
meine frage is nur
wen ich auf den login buutton klicke und die daten so übergebe wie bei meinen registrierungsformular müsste es ja gehn
nur wie sag ich dem button dan wieder das user vorhanden is also
des php script gibt mir ok zurück wen user vorhanden ist und wen nicht ein falsch
nur wie sag ihc dem button des?


Xion - Do 18.02.10 22:00

Ich hab jetzt nicht alle 3 Seiten gelesen, aber du schickst doch (vermutlich) deine Daten via idhttp.Post. Der Befehl gibt dir aber einen String(?) zurück, wo dann wohl deine Antwort drin stehen wird.


Delete - Do 18.02.10 22:02

mit diesen code hier sende ich meine registrierungsdaten ab:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
{ add the used parameters for the script }
    data.AddFormField('username', Edit1.Text);
    data.AddFormField('passwort', Edit2.text);
    data.AddFormField('vorname', Edit3.text);
    data.AddFormField('nachname', Edit4.text);
    data.AddFormField('strasse', Edit5.text);
    data.AddFormField('plz', Edit6.text);
    data.AddFormField('ort', Edit7.text);
    data.AddFormField('gebdatum', Edit8.text);
    data.AddFormField('Email', Edit9.text);
    data.AddFormField('Action''Register');




    { Call the Post method of TIdHTTP and read the result into TMemo }
    Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/register.php', data);
   finally
    data.Free;


Xion - Do 18.02.10 22:04

und was steht denn dann in deinem Memo1?


Delete - Do 18.02.10 22:10

da steht dan Registrierung erfolgreich
des echo wo in php script steht


Xion - Do 18.02.10 22:14

Da dann machs doch so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var Response: String;
begin
    { add the used parameters for the script }
    data.AddFormField('username', Edit1.Text);
    data.AddFormField('passwort', Edit2.text);


    { Call the Post method of TIdHTTP and read the result into Response }
    Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);

    if Response='Erfolgreich Eingelogt' then
      begin
        //was auch immer
      end
   finally
     data.Free;
end;


Ich hab das jetzt mal auf den Login umgemünzt, darum gings ja eigentlich glaube ich.


Delete - Do 18.02.10 22:18

bei mir kommt immer folgender fehler:

[Error] Unit1.pas(46): Undeclared identifier: 'data'
[Error] Unit1.pas(47): Missing operator or semicolon
[Error] Unit1.pas(51): There is no overloaded version of 'Post' that can be called with these arguments
[Error] Unit1.pas(57): 'END' expected but 'FINALLY' found
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'


Xion - Do 18.02.10 22:20

:autsch:

Du solltest vielleicht nicht den Code von mir kopieren, das ist ja nur ein Teil. Kopier die Registrierung in den Login-Button und pass die entsprechend an. Dann hast du auch die Variable data z.B. dabei, die du ja in der Registrierung schon verwendest


Robert.Wachtel - Do 18.02.10 22:31

:hair: Dieser Thread ist jetzt nicht Wirklichkeit, oder? :autsch: Sagt mir bitte, dass das noch Auswirkungen der Karnevalstage :party: sind und ich eigentlich noch träume, ja? :mrgreen:


Delete - Do 18.02.10 22:36

habs jetz so gemacht:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var
  data: TIdMultiPartFormDataStream;
  var Response: String;
  begin
  data := TIdMultiPartFormDataStream.Create;
  try
    { add the used parameters for the script }
    data.AddFormField('user_login', Edit1.Text);
    data.AddFormField('user_pw', Edit2.text);




    Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);

    if Response='Erfolgreich Eingelogt' then
      begin
        Form2.ShowModal;
      end;
   finally
     data.Free;


Aber ich kann mich nich einloggen
und wen jetz aber von php script Noch nicht aktiviert ausgegeben wird das es dan auch nich einloggt

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

hab mal eben mein hinr eingeschaltet und noch was geändert
könnt ihr mir sagen bitte ob er richtig ist weil immer kommt fehler beim login

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
var
  data: TIdMultiPartFormDataStream;
  var Response: String;
  begin
  data := TIdMultiPartFormDataStream.Create;
  try
    { add the used parameters for the script }
    data.AddFormField('username', Edit1.Text);
    data.AddFormField('passwort', Edit2.text);




    Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);

    if Response='Erfolgreich Eingelogt' then
      begin
        Form2.ShowModal;
      end;
   if Response='Noch Nicht Aktiviert' then
      begin
        ShowMessage('Dein Account wurde noch nicht Aktiviert');
      end;
      if Response='Fehler beim Login' then
      begin
        ShowMessage('Fehler beim Login');
      end;
   finally
     data.Free;


Edit://Ok hab ausm php script was geändert jetz kommt aber immer account noch nicht aktiviert ob wohl bei mysql aktiviert auf 1 ist
woran liegt das?
lg


Xion - Do 18.02.10 22:50

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
hab mal eben mein hinr eingeschaltet und noch was geändert

sehr gut :D

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
weil immer kommt fehler beim login


Dann ist wohl was an deinem PHP Script faul *keine Ahnung von hat* oder vielleicht sind auch die Parameter anders (username,passwort)...weil password wäre richtiger :D

Du solltest vielleicht noch ein if Response='' einbauen, falls garkeine Antwort kommt (kein Internet vorhanden oder Server down z.B.)


platzwart - Do 18.02.10 22:55

... oder endlich mal in einem PHP-Forum nachfragen...


Robert.Wachtel - Do 18.02.10 22:58

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
[...] könnt ihr mir sagen bitte ob er richtig ist weil immer kommt fehler beim login [...]

Nun, dann wird er nicht richtig sein...


Delete - Do 18.02.10 22:58

Oder so
ok dan noch ne frage zu delphi
wie mach ich ne md5 verschlü´ßelung rein
das bei registrierung des pw md5 is


Xion - Do 18.02.10 23:04

Ich frag mich immer warum ich das finde und andre nicht...vielleicht liegts daran, dass andere erst garnicht suchen :roll: Und dabei weiß ich nichtmal was md5 genau ist (scheinbar ne Verschlüsselung) :D


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function MD5Hash(const Input: WideString): string;
begin
  with TIdHashMessageDigest5.Create do
  try
    Result := LowerCase(HashStringAsHex(string(Input)));
  finally
    Free;
  end;
end;


Ok, ich muss sagen wenn ich mir den Code angucke, das mit dem with TIdHashMessageDigest5.Create do sieht sehr interessant aus


Delete - Do 18.02.10 23:07

In dem man sich eine eine Komponente oder eine Unit sucht, die eine Zeichenkette mit MD5 hashen kann. Einfach mal im Forum nach MD5 suchen.

Und ich würde dir ans Herz legen dir bei deinen Beiträge mal etwas mehr Mühe zu geben. So
Zitat:
ok dan noch ne frage zu delphi
wie mach ich ne md5 verschlü´ßelung rein
das bei registrierung des pw md5 is

kannst du vielleicht mit deinem Kumpels auf der Straße reden, hier im Forum ist es aber mehr als unangepasst. Drei kurze Sätze, in jedem mindestens zwei Rechtschreibfehler, von Grammatik kann man kaum noch sprechen. Und dann erwartest du von uns, dass wir uns Mühe beim Antworten geben, wenn du uns deine Beiträge so hinrotzt?


Delete - Do 18.02.10 23:09

Ja sorry ich hab es nicht so mit der Rechtschreibung.
Also würdet ihr so Lieb sein und mir des mit dem Md5 ein bisschen näher erklären
Mfg


platzwart - Do 18.02.10 23:14

Such doch ein wenig nach MD5, da wirst du unmengen an Infos finden, dass muss doch nicht jemand für dich recherchieren und hier zusammengefasst wiedergeben?!?


Xentar - Do 18.02.10 23:14

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Oder so
ok dan noch ne frage zu delphi
wie mach ich ne md5 verschlü´ßelung rein
das bei registrierung des pw md5 is

Die Regeln bei der Anmeldung hast du einfach nur weggeklickt, oder?
Dann hol das BITTE nach..
http://www.delphi-forum.de/sites.php?id=9

Da steht z.B. drin ,dass man erst nach 24 Stunden pushen darf, was du ja angeblich anfangs nicht wusstest
Dann steht da noch drin, dass man für jede Frage ein neues Thema aufmachen soll.. was du seit Tagen ignorierst.
Dann noch die Sache, dass man Fragen möglichst verständlich, und direkt mit Quellcode / Fehlermeldung angeben sollte
usw.

Eigeninitiative ist hier übrigens NICHT verboten!

Ich frag mich schon die ganze Zeit, warum das hier noch offen ist?


Delete - Do 18.02.10 23:19

Hmm weis es auch nicht.
Regeln klicke ich immer sofort weg
Ok ich werd sie schnell nachlesen.


Delete - Do 18.02.10 23:22

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Ja sorry ich hab es nicht so mit der Rechtschreibung.

Aber du hast anscheinend einen Computer. Installiere dir für Firefox eine Rechtschreibprüfung.


Delete - Do 18.02.10 23:24

Ja werde ich morgen machen.
Ich hab jetzt mal in einen Php Forum mein Php Script gepostet die sagten in diesen Script seie kein Fehler. Sie meinten mein Code übergibt des Passwort nicht richtig.
Könt ihr mir bitte helfen?
lg


Xion - Do 18.02.10 23:31

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Sie meinten mein Code übergibt des Passwort nicht richtig.

Hihi, immer das gleiche: "Die andren sind schuld" ^^

Ich glaub ich weiß woran es liegt. Beides ist eigentlich richtig. Allerdings schreibst du beim registrieren das Passwort einfach so rein, willst es aber dann gehasht überprüfen.

Beim Registrieren musst du auch schon das Passwort gehasht in die Datenbank schreiben.

PS: Die Rechtschreibfehler sind nichtmal das Problem. Es würde schon genügen wenn du den Satz nach dem Schreiben nochmal durchliest um Buchstaben dreher und völlig kaputte Gramatik zu sehen. Ich schreib auch manchmal komische Sachen, aber dafür liest man sich das ja nochmals durch.


Delete - Do 18.02.10 23:32

Poste noch mal Script und Delphi Code zusammen in einem Beitrag.


Delete - Do 18.02.10 23:47

Ok
Das hier ist mein Php Script:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
<?php
include("config.php");
$username = $user_login;
$passwort = $user_pw;
$result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$user_login."'");
$row = mysql_fetch_array($result);
if ($row["user_passwort"] != $user_passwort) 
{
  echo("Fehler beim Login");
}
else
{
  if ( (int) $row["aktiviert"] == 1)
  {
    echo("Erfolgreich Eingelogt");
  }
  else
  {
    echo("Noch Nicht Aktiviert");
  }
}
?>

Und das hier mein Delphi Quellcode:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
var
  data: TIdMultiPartFormDataStream;
  var Response: String;
  begin
  data := TIdMultiPartFormDataStream.Create;
  try
    { add the used parameters for the script }
    data.AddFormField('username', Edit1.Text);
    data.AddFormField('passwort', Edit2.text);




    Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);

    if Response='Erfolgreich Eingelogt' then
      begin
        Form2.ShowModal;
      end;
   if Response='Noch Nicht Aktiviert' then
      begin
        ShowMessage('Dein Account wurde noch nicht Aktiviert');
      end;
      if Response='Fehler beim Login' then
      begin
        ShowMessage('Fehler beim Login. Versuch es später nocheinmal');
      end;
   if Response='' then
      begin
        ShowMessage('Keine Internetverbindung');
      end;
   finally
     data.Free;

Lg


Delete - Do 18.02.10 23:59

Und wo holst du in deinem Script die von deinem Delphi Programm geposteten Daten ab?


Delete - Fr 19.02.10 00:03

Edit://
Meinst du jetzt im Php script oder wie?
Komme jetzt grade irgendwie nicht mit.


Xentar - Fr 19.02.10 00:13

Er meint, wie bekommt dein PHP Skript die POST Daten in die Variablen?
Nur weil die Variablen genau so heißen, bringt da nichts..


Narses - Fr 19.02.10 00:16

Moin!

Jetzt nochmal offiziell: Pushen ist hier erst nach 24 Stunden erlaubt. Wenn du nicht in der Lage sein solltest, dich an diese Regel zu halten, werde ich dir demnächst mit 24-stündigen Thread-Sperren "helfen", diese einzuhalten.

Weiterhin hast du bereits den Hinweis bekommen, dass hier pro Thread nur ein Thema (bzw. Frage) erlaubt ist; sonst gibt das Chaos. Auch wenn deine MD5-Probleme mit deinem Programm zu tun haben mögen, sie gehören nicht in diesen Thread. Dafür also bitte einen neuen aufmachen. Danke.

cu
Narses


Delete - Fr 19.02.10 00:16

Ich hab mal denjenigen gefragt der mir des Php Script gemacht hat und er sagte er weis es auch nicht aber bei den Registrierungsformular hats geklappt.
Und mit md5 mach ich dan nen neuen Thread auf ok.


DonManfred - Fr 19.02.10 00:19

Ja, das php-script.

Zeig mal den Inhalt der config.php (evtl. logindaten ausXXsen aber sonst vom inhalt bitte posten). Das hilft bei der Fehlersuche.

Mal davon abgesehen das das PHP-Script fehlerhaft und eine massive Sicherheitslücke ist.

Edit: Nach Narses Post ist es dann wohl besser, wenn du nochmal zum eigentlichen Problem den PHP-Code (samt config.php) postest...

Und Fehlermeldungen, die Dir von php ausgegeben werden oder sonstige Fehlermeldungen wären auch interessant.

Ich kenn mich mit den indy-Komponenten nicht so aus aber es würde helfen, wenn jemand ein post-beispiel posten könnte, wo ein php-script aufgerufen wird, ein oder zwei Werte übergeben werden und welches dann die antwort (ausgabe) vom php-script in ein memo ausgibt... Hat jemand solch ein Code grad zur Hand vielleicht....

Ich würde dann beim php-Problem helfen aber ich bräuchte ein Delphi-Beispiel.


Delete - Fr 19.02.10 00:21

Ok hier mal meine Config.php

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<?php 

$MYSQL_HOST = "xxxxxxxxxx"; 
$MYSQL_USER = "xxxxx"; 
$MYSQL_PW = "xxxxxx"; 
$MYSQL_DB = "xxxxx"; 

$conn = mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PW);
mysql_select_db($MYSQL_DB, $conn);

?>


DonManfred - Fr 19.02.10 00:27

Ok, passt.

diese ausgaben von den echo-Befehlen...

also z.B. echo("Fehler beim Login");

Kommen diese ausgaben bei Dir im Delphi-Programm an???? auch wenn vielleicht die "falsche" Ausgabe erscheint...


Delete - Fr 19.02.10 00:29

Jaa des kommt alles an
Es kommt immer Account noch nicht Aktiviert :(


Xentar - Fr 19.02.10 00:34

Mal ganz naiv gefragt.. hast du mal in die Datenbank geguckt, welchen Wert "aktiviert" hat?


Delete - Fr 19.02.10 00:37

Also wen sich jemand registriert is er auf 0
und wen ich ihn auf 1 stelle ist er normal aktiviert


DonManfred - Fr 19.02.10 00:40

Ok, dann ist entweder der account noch nicht aktiviert (not "$row["aktiviert"] == 1") oder null... Letzteres nehme ich an, weil der Username ja SO $username = $user_login; eigentlich nicht mehr funktionieren sollte wenn man ein aktuelles php hat in dem register_globals auf off stehen, was inzw default ist.

Probiers mal so


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
<?php
include("config.php");
if (isset($_REQUEST['username'])) $username = mysql_real_escape_string($_REQUEST['username']); else $username = "";
if (isset($_REQUEST['passwort'])) $passwort = mysql_real_escape_string($_REQUEST['passwort']); else $passwort = "";
if ($username != "" && $passwort != ""){
  $result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$username."'") OR die("MySQL-Fehler: ".mysql_error());
  while ($row = mysql_fetch_array($result)){
    if ($row["user_passwort"] != $passwort){
      echo("Fehler beim Login");
      exit;
    } else {
      if ( (int) $row["aktiviert"] == 1){
        echo("Erfolgreich Eingelogt");
      }  else if ( (int) $row["aktiviert"] == 0){
        echo("Noch Nicht Aktiviert");
      } else {
        echo "Sollte nicht auftreten :D";
      }
    }
  }
} else {
  echo "Username und/oder Passwort nicht gesetzt";
}
?>


Delete - Fr 19.02.10 00:44

Da kommt immer Fehler beim login :(

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Habe jetzt in einen Php Forum folgendes Php Script bekommen:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
$username = mysql_real_escape_string($_GET['username']);
$passwort = md5($_GET['passwort']);

$query = '
  SELECT
    aktiviert  
  FROM
    scriptmaker_users
  WHERE
    username = "'.$user_login.'"
  AND
    passwort = "'.$passwort.'"';

$result = mysql_query($query) or die(mysql_error().'<br>'.$query);

if(mysql_num_rows($result) == 1)
{
  $row = mysql_fetch_assoc($result);
  if ($row["aktiviert"] == 1)
  {
    echo("Erfolgreich Eingelogt");
  }
  else
  {
    echo("Noch Nicht Aktiviert");
  }
}
else{
  echo("Fehler beim Login");
}
?>

Aber jetzt geht das mit der Ausgabe nicht mehr wie muss ich des jetzt anpassen?
lg


SvenAbeln - Fr 19.02.10 02:35

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:

Aber jetzt geht das mit der Ausgabe nicht mehr wie muss ich des jetzt anpassen?

Wow, was für eine tolle Fehlerbeschreibung. Jetzt dürfen alle hier im Forum raten, wie deine Ausgabe nun aussieht und wie du sie in Wirklichkeit gerne hättest. ;-)

Auf jeden Fall solltest du mal aufpassen wie deine Variablen denn nun heissen.
z.B. in deinem letzten Post (Do 18.02.10 23:44)

Quelltext
1:
2:
3:
$username = mysql_real_escape_string($_GET['username']);
[...]
    username = "'.$user_login.'"


Auch die Bezeichner für deine Datenbank Felder sind unterschiedlich:

Quelltext
1:
2:
3:
4:
(Do 18.02.10 23:44)
passwort = "'.$passwort.'"';
(Do 18.02.10 22:47)
if ($row["user_passwort"] != $user_passwort)


Delete - Fr 19.02.10 02:44

es ist so wen ich dieses php script benutze

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
<?php
include("config.php");
$username = $user_login;
$passwort = $user_pw;
$result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$user_login."'");
$row = mysql_fetch_array($result);
if ($row["passwort"] != $user_pw)
{
  echo("Fehler beim Login");
}
else
{
  if ( (int) $row["aktiviert"] == 1)
  {
    echo("Erfolgreich Eingelogt");
  }
  else
  {
    echo("Noch Nicht Aktiviert");
  }
}
?>


kommt immer account noch nicht aktiviert obwohl ich ihn per phpmyadmin schon aktiviert hab
weis aber nicht wieso das dan kommt


SvenAbeln - Fr 19.02.10 03:08

Und wieder zurück zum alten Script ;-)

Im Delphi schickst du aber immer noch diese Felder?

Delphi-Quelltext
1:
2:
data.AddFormField('username', Edit1.Text);
data.AddFormField('passwort', Edit2.text);

Du Schickst also username und passwort

Im PHP verwendest du dann $user_login und $user_pw, denen wird hier aber kein Wert zugewiesen.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
<?php
include("config.php");
$username = $user_login;
$passwort = $user_pw;
$result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$user_login."'");
$row = mysql_fetch_array($result);
if ($row["passwort"] != $user_pw)
?>


Lass dir doch von PHP mal die Variablen per Echo ausgeben und schau nach was dort im Script überhaupt ankommt.


Delete - Fr 19.02.10 03:12

aber wen ich bei delphi user__login und user_pw benutze
und mich dan einloggen will dann kommt immer Fehler beim Einloggen


Webo - Fr 19.02.10 08:37

Vielleicht weil ein Passwort, Hash oder ähnliches falsch ist ?


Delete - Fr 19.02.10 10:39

Nein eig. nicht


SvenAbeln - Fr 19.02.10 11:01

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Nein eig. nicht


Lass dir zur Sicherheit doch einfach mal $user_login , $user_pw und $row["passwort"] vom PHP ausgeben, dann kannst du sehen was dort ankommt und warum dein Script nicht richtig funktioniert.


Delete - Fr 19.02.10 12:58

Es wird bei allen drei gar nichts ausgegebeen


Robert.Wachtel - Fr 19.02.10 13:10

Spätestens jetzt müsstest Du mit allen vorher schon mindestens ein mal genannten Informationen und Tipps in der Lage sein, das Problem zu erkennen und zu beheben.


Delete - Fr 19.02.10 13:14

Ich bin mir nicht sicher aber kann es sein das da nur irgendwie was verdreht ist?


DonManfred - Fr 19.02.10 13:27

Am besten halt nochmal aktuellen delphi- UND php-Code posten sowie die Struktur der Usertabelle.

Letzteres bekommst du in phpMyAdmin. Siehe Snapshot

Moderiert von user profile iconNarses: Inline- in normalen Anhang gewandelt.


ALF - Fr 19.02.10 13:30

Hi, hoffe mich nicht zu irren

wenn ich aber richtig gesehen habe, übergibst Du an php nicht die einzelnen Felder sondern ein Array (data). Was soll PHP damit machen, wenn Du es nicht in der Login.php aus einander nimmst.
Schau Dir mal unten in Deinem Broswer die Zeile an, wenn Du mit der Maus auf ein Link gehst wie die Übergabeparameter sein müssen.
z.B.
...meineseite.de/login.php?user=username&passwort=pwd&email=mail...... usw.

Und jetzt kannst Du in der login.php alle einzelnen Parameter auch abfragen

Quelltext
1:
2:
3:
if(isset($_POST['user'])
if(isset($_POST['passwort'])
if(isset($_POST['email'])

dient nur als Denkanstoss

Also, Die Variablen die Du abfragen willst muss auch so gesendet werden!

Gruss ALf


Delete - Fr 19.02.10 13:35

hier mein delphi quellcode:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
var
  data: TIdMultiPartFormDataStream;
  var Response: String;
  begin
  data := TIdMultiPartFormDataStream.Create;
  try
    { add the used parameters for the script }
    data.AddFormField('username', Edit1.Text);
    data.AddFormField('passwort', Edit2.text);




    Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);

    if Response='Erfolgreich Eingelogt' then
      begin
        Form2.ShowModal;
      end;
   if Response='Noch Nicht Aktiviert' then
      begin
        ShowMessage('Dein Account wurde noch nicht Aktiviert');
      end;
      if Response='Fehler beim Login' then
      begin
        ShowMessage('Fehler beim Login. Versuch es später nocheinmal');
      end;
   if Response='' then
      begin
        ShowMessage('Keine Internetverbindung');
      end;
   finally
     data.Free;


hier mein Php Script:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
<?php
include("config.php");
$username = $user_login;
$passwort = $user_pw;
$result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$user_login."'");
$row = mysql_fetch_array($result);
if ($row["passwort"] != $user_pw)
{
  echo("Fehler beim Login");
}
else
{
  if ( (int) $row["aktiviert"] == 1)
  {
    echo("Erfolgreich Eingelogt");
  }
  else
  {
    echo("Noch Nicht Aktiviert");
  }
}
?>

Screenshot ist im anhang
Edit:Sry antwort zu spät bemerkt
aber ich wen über nen link fahre mit meiner maus sehe ich nichts im Browser da ich google Chrome nutze


ALF - Fr 19.02.10 13:47

Steht aber auch oben in der Zeile wenn Du eine Webseite aufrufst.
Da stehen auch die Parameter, wie der Aufruf erfolgen muss.

Gruss ALf


Delete - Fr 19.02.10 13:54

ich hab jetzt mal am anfang von meinen script error_reporting(E_ALL); hingeschrieben
weil ich weis das es fehler ausgibt
so bei mir kommt jetzt:
Zitat:
Notice: Undefined variable: user_login in /usr/www/users/kdxxxxx/login.php on line 4
Notice: Undefined variable: user_pw in /usr/www/users/kdxxxxx/login.php on line 5
Notice: Undefined variable: user_login in /usr/www/users/kdxxxxx/login.php on line 6
Notice: Undefined variable: user_pw in /usr/www/users/kdxxxxx/login.php on line 8
Fehler beim Login

ist des user_login und user_pw falsch oder?

@Alf
egal welche seiten ich aufrufe es kommt immer nur der Website name mehr nicht

Moderiert von user profile iconNarses: Persönliche Daten aus den Pfaden entfernt und quote-Tags hinzugefügt.


ALF - Fr 19.02.10 14:07

ich benutze nicht google Chrome ....mhh
Du solltest, wenn Du sowas machst, auch einen Browser verwenden wo mann sowas sieht.
Dort erkennt man dann gleich was falsch ist.

Ansonsten schau Dir noch mal an, was ich geschrieben habe, wie das Absenden der Daten aussehen muss.
Wobei z.B.

user die Variable ist, die gesendet wird,
username der Inhalt vom Editfeld ist, usw.

Gruss Alf


Delete - Fr 19.02.10 14:15

Ja werd mir demnächst Firefox holen aber mit Umts internet dauert des halt bissche
Hmmm bin des Script drei mal durchgegangen und komm immernoch nicht auf nen Grünen Zweig :(


@Luckie & Robert.Wachtel
Ihr wisst schon das das Offtopic is :):)
wieso leider


Delete - Fr 19.02.10 14:30

War der Thread gestern nicht geschlossen worden?


Robert.Wachtel - Fr 19.02.10 14:37

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
War der Thread gestern nicht geschlossen worden?

Ja, aber leider scheinbar nur bis Mitternacht... :(


ALF - Fr 19.02.10 14:53

ich habe es Dir doch schon geschrieben!
Dein

Delphi-Quelltext
1:
 Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);                    

(data) ist ein Array

Die Übergabe sollte so sein:

Delphi-Quelltext
1:
 Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user='+username+'&passwort='+passwd+'&email='+mail);                    

als Denkanstoss!
und die Abfrage in der login.php habe ich Dir auch geschrieben!

Natürlich kannst Du das (data)Array auch so senden,

Delphi-Quelltext
1:
 Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?daten='+data);                    

nur musst Du dann, in Deiner Login.php das Array auch aus einander nehmen und sie dort einzelnen Variablen zuordnen, um sie mit den sql abfragen zu vergleichen usw.

Gruss ALf


SvenAbeln - Fr 19.02.10 14:58

Auch wenn ich mich wiederhole:

user profile iconSvenAbeln hat folgendes geschrieben Zum zitierten Posting springen:
Und wieder zurück zum alten Script ;-)

Im Delphi schickst du aber immer noch diese Felder?

Delphi-Quelltext
1:
2:
data.AddFormField('username', Edit1.Text);
data.AddFormField('passwort', Edit2.text);

Du Schickst also username und passwort

Im PHP verwendest du dann $user_login und $user_pw, denen wird hier aber kein Wert zugewiesen.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
<?php
include("config.php");
$username = $user_login;
$passwort = $user_pw;
$result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$user_login."'");
$row = mysql_fetch_array($result);
if ($row["passwort"] != $user_pw)
?>



Delete - Fr 19.02.10 14:59

man ich kapier jetz gar nichts mehr
könntest du des schnell meinen quellcode von delphi und mein php script anpassen
bitte
lg


Jakob_Ullmann - Fr 19.02.10 15:06

user profile iconALF so einfach ist das leider nicht, denn die Daten kannst du entweder als POST oder als GET übertragen. Wenn du sie als GET überträgst, so erscheinen sie in der URL. Dann darf user profile iconmaier1990 seinen PHP-Code auch nochmal anpassen, weil er dann die Daten nicht mit


Quelltext
1:
$_POST["username"]                    


sondern mit $_GET["username"] abfragen muss. Formulardaten werden aber normalerweise mit POST übertragen.

user profile iconmaier1990 mann dann frag nach, was du nicht verstehst, aber wir sind hier keine kostenlos-Arbeiter. Wenn du keine Eigeninitiative zeigen willst, weil du zu faul bist, frag in der Jobbörse. Aber erwarte nicht, dass du dabei was lernst. Bei den Markierungen was zu finden, sollte doch nicht mehr so schwer sein!?


Delete - Fr 19.02.10 15:16

Ich will es ja selber machen
Nur wie muss ich die Daten von Delphi ans Php script senden?
Passt da meins oder ist es besser Alf sein Vorschlag zu nehmen
und in Php script muss ich da jetz auch noch was ändern?


ALF - Fr 19.02.10 15:18

hi, user profile iconJakob_Ullmann das mit Post und Get weiss ich doch. :wink:
Er sollte sich einfach mal anschauen wie die Übergabe sein muss!
sonst kommt er eh nicht weiter :lol:
Der Rest steht ja nun schon da, wie er es machen kann, soll usw. :lol:

Gruss ALf


Jakob_Ullmann - Fr 19.02.10 15:29

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
hi, user profile iconJakob_Ullmann das mit Post und Get weiss ich doch. :wink:
Er sollte sich einfach mal anschauen wie die Übergabe sein muss!


Gut, aber als Anfänger wird man da leicht verwirrt. Wenn man da nur von ein paar Tutorials lernt, weiß man das eventuell nicht. Aber ich bin eigentlich davon ausgegangen, dass du es weißt, das war auch eher an user profile iconmaier1990 gerichtet.

Zitat:
sonst kommt er eh nicht weiter :lol:
Der Rest steht ja nun schon da, wie er es machen kann, soll usw. :lol:


Wenn er ausschließlich Tutorials liest, wird er sowieso nicht weiter kommen. Jedenfalls habe ich diese Erfahrung gemacht, wenn nicht alles irgendwo aus einer Hand kommt, wird man immer irgendwo Lücken haben, weil ein Tutorial nie genau an das andere ansetzt. Das führt dazu, dass man diese Lücken in seinen Programmen mit Copy-and-Paste füllt und sich freut, das es geht. Solange man aber nicht versteht, warum es geht, wird man es nie wiedergeben oder auf andere Gegebenheiten anwenden können. Und das Gefühl hatte ich ziemlich oft in diesem Thread.

user profile iconmaier1990, was meinst du eigentlich, wozu user profile iconSvenAbeln orangene Markierungen gesetzt hat?


Delete - Fr 19.02.10 15:35

Weil hier anscheinend was Falsch isst
nur ich weis nicht was


Jakob_Ullmann - Fr 19.02.10 15:43

Dann schau dir die Stellen an und vergleiche sie. Lies dir den Text dazu auch durch. Merkst du was?

Sollte das nicht reichen, machst du ein bisschen Debugging. Schreib einfach sowas wie


C#-Quelltext
1:
<tt>$username = <? echo "$username"; ?></tt>                    


Delete - Fr 19.02.10 15:53

user profile iconSvenAbeln hat folgendes geschrieben Zum zitierten Posting springen:
Im PHP verwendest du dann $user_login und $user_pw, denen wird hier aber kein Wert zugewiesen.

Aber ich weise der variale $user_pw und $user_login einen wert zu mit:

username = $user_login;
$passwort = $user_pw;

oder etwa nicht?

Moderiert von user profile iconNarses: Zitat kenntlich gemacht.


ALF - Fr 19.02.10 15:56

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Weil hier anscheinend was Falsch isst
nur ich weis nicht was

weil Du an 2 Baustellen bastels ohne die ein oder andere zu verstehn!
Darum nicht alles auf einmal!
Erst die übergabe richtig machen dann die Abfragen in der login.php testen wie ich sie dir schon gezeigt habe und eventl mit echo wie user profile iconJakob_Ullmann es gschrieben hatt prüfen!


Dann weisst Du auch ob alles richtig ist!

Gruss Alf

Moderiert von user profile iconNarses: Quote-Tag-Syntax korrigiert.


Robert.Wachtel - Fr 19.02.10 15:56

Letzteres.

Und jetzt bitte noch mal mit den absoluten Grundzügen der Softwareentwicklung beschäftigen...


Delete - Fr 19.02.10 15:58

Aber was ist an meinen Delphi Quellcode fehlerhaft
ich find ihn nicht


elundril - Fr 19.02.10 16:01

hab ihn gefunden: http://www.delphi-forum.de/viewtopic.php?p=596286#596286

lg elundril


Delete - Fr 19.02.10 16:07

ja des bringt mich aber auch nicht weiter weil ich des nicht check


Narses - Fr 19.02.10 16:14

Moin!

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Aber was ist an meinen Delphi Quellcode fehlerhaft
ich find ihn nicht
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
hab ihn gefunden: http://www.delphi-forum.de/viewtopic.php?p=596286#596286
:lol:

Ich denke, so hat er das nicht gemeint, war aber auch mein erster Gedanke... 8)


user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
ja des bringt mich aber auch nicht weiter weil ich des nicht check
An dieser Stelle solltest du dir mal Gedanken machen, ob das, was du da vor hast, vielleicht ganz einfach noch etwas zu schwer für dich ist? :nixweiss:

cu
Narses


Delete - Fr 19.02.10 16:16

Ja kann sein das es etwas zu schwer für mich ist und ich dazu noch zu wenig weis
aber ich brauch für mein anderes programm so ein login system.
Das registrieren klappt ja schon nur des login
und so codeschnipsel die iritieren mich immer voll :(


Jakob_Ullmann - Fr 19.02.10 16:22

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconSvenAbeln hat folgendes geschrieben Zum zitierten Posting springen:
Im PHP verwendest du dann $user_login und $user_pw, denen wird hier aber kein Wert zugewiesen.

Aber ich weise der variale $user_pw und $user_login einen wert zu mit:

username = $user_login;
$passwort = $user_pw;

oder etwa nicht?

Moderiert von user profile iconNarses: Zitat kenntlich gemacht.


Betrachten wir ein Formular mit einem Edit Edit1 und einem Label Label1. Nun sei da noch ein Button Button1, auf den geklickt wird, nachdem man im Edit die Eingabe "hallo" tätigt. Nun sieht die mit dem OnClick-Ereignis verlinkte Prozedur so aus:


Delphi-Quelltext
1:
2:
3:
4:
procedure TfrmMain.Button1Click(Sender: TObject);
begin
  Edit1.Text := Label1.Caption;
end;


Und du meinst, dass hinterher im Label1 "hallo" angezeigt wird? Da bin ich aber gespannt...

(EDIT: Noch schöner klappt das ganze, wenn man statt Label1.Caption eine lokale Variable nimmt, der man vorher noch keinen Wert zugewiesen hat.)

Und nur, weil ein Post- oder Get-Parameter username heißt, heißt das noch lange nicht, dass auch die Variable $username diesen Wert hat. :roll:


Narses - Fr 19.02.10 16:26

Moin!

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Ja kann sein das es etwas zu schwer für mich ist und ich dazu noch zu wenig weis
aber ich brauch für mein anderes programm so ein login system.
Kurz: du brauchst den Code, hast aber keine Ahnung, wie du es selbst schreiben sollst. In diesem Fall hilft nur ein Job-Angebot. Einen entsprechenden Thread [http://www.delphi-forum.de/viewtopic.php?t=97828] hast du ja schon erstellt. Wenn sich niemand findet, wird dein Angebot vielleicht nicht gut genug sein?

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
und so codeschnipsel die iritieren mich immer voll :(
Du hast jetzt auf 6 Seiten in diesem Thread alles genannt bekommen, um die Probleme zu lösen, incl. Code(-teilen). Trotzdem kriegst du es nicht hin. Schlussfolgerung: du verstehst nicht, was da passiert. Das wird sich aber auch nicht mit fertigem Code ändern, im Gegenteil, deine Motivation, sich mal grundlegend mit der Materie zu beschäftigen wird noch geringer werden, läuft ja schon. :|

Zusammengefasst: so kommen wir hier nicht weiter. :!:

cu
Narses


Webo - Fr 19.02.10 16:29

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Ja kann sein das es etwas zu schwer für mich ist und ich dazu noch zu wenig weis

Dann unternimm dagegen doch was ... Wenn man mal Köpfchen einschaltet, dann hat man hier in diesem schon 6-Seiten füllenden Thema wirklich soooo viele Tipps, was man machen sollte, dass es quasi unmgöglich ist, die alle zu missachten.
user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
und so codeschnipsel die iritieren mich immer voll :(

Wenn dich das so irritiert, dann mach ein Angebot in der Job-Börse, dann bekommste den kompletten Code, aber dafür musste dann was bezahlen ;-)


Delete - Fr 19.02.10 16:31

@Jakob_Ullman
Des is mir schon klar wen ich den Button dan drück wird Label1 in des Edit eingetragen.
Jb angebot hab ich schon gemacht aber es findet scih niemand :(
Ich such eig. nur jemand der mir den Richtigen Quellcode für den Button und des php Script schreibt


Narses - Fr 19.02.10 16:33

Moin!

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Jb angebot hab ich schon gemacht aber es findet scih niemand :(
Ich such eig. nur jemand der mir den Richtigen Quellcode für den Button und des php Script schreibt
Wenn das auf dieses Niveau hinausläuft, mache ich den Thread zu, das ist nur noch Betteln und hat nix mit Lernen zu tun. Du hast den Job in der entsprechenden Sparte bereits ausgeschrieben, wenn da nix kommt - Pech gehabt.

cu
Narses


Delete - Fr 19.02.10 16:36

Ich will es ja lernen nur hilft es mir nichts wen nur irgenden text orange markiert wird
wenigstens bisschen erklären wär hilfreich


Jakob_Ullmann - Fr 19.02.10 16:36

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
@Jakob_Ullman
Des is mir schon klar wen ich den Button dan drück wird Label1 in des Edit eingetragen.


Eben. Das heißt, der linken Seite wird die rechte Seite zugewiesen. Und in PHP ist das nicht anders.

Es bringt nichts, hier weiter rumzudiskutieren, wenn man weder von PHP, noch von Delphi Ahnung hat (und noch dazu von dem, was da abläuft).

Zitat:
Jb angebot hab ich schon gemacht aber es findet scih niemand :(


Dazu hat dir user profile iconNarses ja wohl geantwortet.


ALF - Fr 19.02.10 16:39

Für Dich zum Verständniss! und nur als TEST

Delphi-Quelltext
1:
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user="meier1999"');                    

und in der login.php

Quelltext
1:
2:
3:
4:
if(isset($_POST['user'])){
print "$_POST['user']"}
else
{print "nix angekommen"};

Hoffentlich alles richtig im code

Gruss Alf


Webo - Fr 19.02.10 16:39

Ich fasse für dich noch einmal zusammen, was du prüfen solltest:


So, und nach jedem Schritt prüfst du jetzt, ob es funktoniert. Und sofort, wenn ein Schritt nicht funktioniert, dann schaust du, was habe ich geändert und prüfst, woran es liegen könnte ... So kommst du alleine drauf, da bin ich mir sicher :idea:


Delete - Fr 19.02.10 16:42

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Für Dich zum Verständniss! und nur als TEST

Delphi-Quelltext
1:
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user="meier1999"');                    

und in der login.php

Quelltext
1:
2:
3:
4:
if(isset($_POST['user'])){
print "$_POST['user']"}
else
{print "nix angekommen"};

wen ich des jetzt so mache müsste es richtig sein oder?

Delphi-Quelltext
1:
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user_pw="Edit1.Text"');                    


C#-Quelltext
1:
2:
3:
4:
if(isset($_POST['user_pw'])){
print "$_POST['user_pw']"}
else
{print "nix angekommen"};


Moderiert von user profile iconNarses: PHP-Code in CS-Tags gesetzt.


Webo - Fr 19.02.10 16:46


Delphi-Quelltext
1:
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user_pw="Edit1.Text"');                    

So würde das Passwort Edit1.Text lauten, du musst das etwa so machen:

Delphi-Quelltext
1:
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user_pw="' + Edit1.Text + '"');                    

Der String wird unterbrochen, um den Wert aus dem Edit auch zu übergeben, sonst passiert dass, was ich grade 2 Zeilen drüber schrieb


ALF - Fr 19.02.10 16:46

eh!!! user profile iconmaier1990liest Du überhaupt die anderen Antworten
Schau mal was Du da in Delphi schon wieder falsch machst!!!


elundril - Fr 19.02.10 16:48

nein, weil sonst der wert "edit1.Text" zur website geschickt wird. Du willst aber den Wert der in der Variable mit dem Namen Text in der Komponente Edit1 zu Website schicken. deswegen:


Delphi-Quelltext
1:
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user_pw="' +Edit1.Text + '"');                    


lg elundril


Delete - Fr 19.02.10 16:52

Ja lese ich
wenn ich jetz webos Code ausführe kommt aber immer:
[Error] Unit1.pas(56): There is no overloaded version of 'Post' that can be called with these arguments
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'


ALF - Fr 19.02.10 16:55

das kommt von copy und paste :twisted:
ich gebs auf 8)

Gruss Alf


Xion - Fr 19.02.10 16:58

Hui, schon Seite 7 :D

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
das kommt von copy und paste :twisted:
ich gebs auf 8)

Also in sehe da keinen Fehler *blind ist*

Edit:
Ah, ok, nachdem ich meine Brille aufgesetzt hab seh ichs 8)

Da muss noch ein nil als Parameter mit würd ich mal sagen (da wo früher mal data stand ^^)


DonManfred - Fr 19.02.10 17:02

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Für Dich zum Verständniss! und nur als TEST

Delphi-Quelltext
1:
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user="meier1999"');                    


Und was hat das für einen Zweck als Usernamen -->"meier1990"<-- zu übermitteln; also INKLUSIVE der "

WENN Du schon helfen willst, dann liefere wenigstens ordentlichen code. Mit solchen "Fallen" ist meier1990 massiv überfordert. Naja, leider ist er das scheinbar auch bei anderen konstruktiven Kommentaren. :-)


Für mich ist das Thema hier nun aber auch erledigt; ich hab dreimal meine hilfe angeboten aber nicht einmal wirklich eine sinnvolle Antwort erhalten oder gar den glauben, meier1990 hätte es verstanden. In meinen Augen ist meier1990 zu 100% Copy&Paste-Coder ohne auch nur das geringste von der Materie zu verstehen.

@meier1990: Wie ich es in ner PN ja schonmal sagte; KAUF DIR EIN ORDENTLICHES BUCH und lerne erstmal ein Jahr lang GRUNDLAGEN. DANN bist Du vielleicht so weit, das Du eine Kommunikation zwischen Delphi und PHP hinbekommst ohne gleich RIESIGE Sicherheitslücken aufzumachen. Aber ohne WISSEN, wie etwas funktioniert wirst du es nie hinbekommen. Du hast hier im Thread mind. schon 60 sinnvolle Hinweise und beispielcodes bekommen (auch von mir) aber Du lernst aus all den Antworten REIN GAR NICHTS.

Zu sagen "ich brauch einen login aber für mein Programm" ist keine Ausrede für Unwissenheit. LERNE die Grundlagen! LERNE, wie PHP arbeitet und dann DEBUGGE was das Zeug hält...

"Wer sich selber als Noob bezeichnet, der sollte die Finger davon lassen!
Wer daran etwas ändern möchte, der LERNT Grundlagen!"


Webo - Fr 19.02.10 17:04

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
Da muss noch ein nil als Parameter mit würd ich mal sagen (da wo früher mal data stand ^^)

Mhh, das ist natürlich gut möglich, mir ist nur den fehlerhaft übergebene Text aus dem Edit aufgefallen und da ich hier grade kein Delphi zu Verfügung habe und auch nur nebenbei ins Forum reinschaue, habe ich evtl weitere Parameter nicht beachtet.


Xion - Fr 19.02.10 17:07

user profile iconDonManfred hat folgendes geschrieben Zum zitierten Posting springen:

"Wer sich selber als Noob bezeichnet, der sollte die Finger davon lassen!
Wer daran etwas ändern möchte, der LERNT Grundlagen!"


Naja, oder man macht ein Job-Angebot. Wenn ich mich recht erinner war da sogar irgendwo eins, nur man hat nicht verstanden worum es genau geht ^^


DonManfred - Fr 19.02.10 17:08

user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:


Delphi-Quelltext
1:
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user_pw="' +Edit1.Text + '"');                    



Wenn, dann bitte


Delphi-Quelltext
1:
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user_pw=' +Edit1.Text);                    


die Anführungszeichen (") haben an der Stelle nichts verloren. Wenn der name bzw hier das passwort leerzeichen enthält dann müsste man das mit urlencode behandeln bevor man es POSTet und auf PHP-Seite dann entsprechend urlDEcoden...


elundril - Fr 19.02.10 17:17

kenn mich mit PHP nicht aus, wusste nicht das es ohne die " sein muss. scusi!


DonManfred - Fr 19.02.10 17:27

@elundril:

Alles, was nach user_pw= kommt (und vor dem nächsten &) wird (in diesem Fall) per _GET übergeben... Also auch die " die man php-seitig dann erst wieder entfernen müsste...

Vergleichbar:

Delphi-Quelltext
1:
edit1.text := '"Username"';                    


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Jakob_Ullmann - Fr 19.02.10 17:37

user profile iconelundril, das hat auch nichts mit PHP zu tun. Aber nichts desto trotz hätte es maier1990 auffallen müssen bei den vorherigen Posts, da wurde die korrekte Syntax gepostet. Und wenn er sich wirklich damit beschäftigt hätte, wüsste er, weshalb bei dem von ALF geposteten PHP-Code "nix angekommen" erscheint und auch, warum die DoubleQuote-Zeichen da falsch sind. Aber das wurde hier alles bereits geschrieben.

user profile iconmaier1990 solltest du die Grundlagen erlernen wollen, hier ein paar Links, die ich dir ans Herz legen würde:

http://www.delphi-treff.de/tutorials/objectpascal/delphi-crashkurs/
http://www.delphi-treff.de/tutorials/netzwerk-und-internet/indy/
http://en.wikibooks.org/wiki/Php
http://php.net/manual/de/reserved.variables.post.php
http://www.php.net/manual/de/reserved.variables.get.php
http://www.php.net/manual/de/book.mysql.php


Delete - Fr 19.02.10 17:45

maier1990 bitte mit ai
naja ich werd mir die 7seiten nochmal in ruhe durchlesen


Delete - Fr 19.02.10 17:56

Herr Gott, erbarmt sich denn niemand, der ihm mal das Script und zum Script passenden Delphi Code schreibt? :mrgreen:


Jakob_Ullmann - Fr 19.02.10 17:59

Ja, ich weiß, eine kalte Welt hier im Forum. Und dann auch noch Geld dafür wollen - Kapitalismus ist doch was Schreckliches. :P


Xion - Fr 19.02.10 18:04

Hätte ich vielleicht sogar gemacht, hab aber überhaupt keine Ahnung von PHP :D Da muss mal wer andres für herhalten ^^ Ich mein, mit der Energie/Zeit die in diesem Topic steckt hätte man schon alles mögliche umsetzen können...

Edit: wie ist denn eigentlich der Status zur Zeit? Mit dem Usernamen/Passwort in der URL gehts jetzt, oder wo ist das Problem?

Ich glaub ich wiederhole das jetzt zum x-ten mal:
Wenn du als echo mal den Empfangenen UserName/Passwort und Passwort in der DB zurückgibst, dann sollte man doch das Problem finden können *wunder* man müsste nur mal wissen, was denn dann zurückgegeben wird...einfach mal ShowMessage(Response) machen.


ALF - Fr 19.02.10 18:38

user profile iconDonManfred
Zitat:
Und was hat das für einen Zweck als Usernamen -->"meier1990"<-- zu übermitteln; also INKLUSIVE der "

WENN Du schon helfen willst, dann liefere wenigstens ordentlichen code.

War mit den Gedanken schon bei php print. sorry.
und geholfen hatt ja wohl keiner so richtig!

sonst hätte man ja wohl bemerken müssen das in Delphi die Übergabe an sein php

Delphi-Quelltext
1:
form1.IdHTTP1.Post('http://www.chiller4fun.de/addons/login.php', data);                    

einfach nur Falsch ist! Du also auch DonManfred! :wink:

Bitte kein Disput über Kritiken :wink:
Maier1999 ist halt so ein besonderer User :rofl:
Gruss Alf


Jakob_Ullmann - Fr 19.02.10 18:58

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:

Maier1999 ist halt so ein besonderer User :rofl:
Gruss Alf


Stimmt, bei allen anderen wäre der Thread schon längst zu. :wink:


DonManfred - Fr 19.02.10 19:32

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:

sonst hätte man ja wohl bemerken müssen das in Delphi die Übergabe an sein php

Delphi-Quelltext
1:
form1.IdHTTP1.Post('http://www.chiller4fun.de/addons/login.php', data);                    

einfach nur Falsch ist! Du also auch DonManfred! :wink:


Okok... Ich möchte jetzt nicht einfach so behaupten das es so doch ginge... Ich hab grad wenig Zeit aber ich versuch mal eben ein kleines Beispiel zu machen...

20 minuten später....

Ohne mit der http-Komponente erfahrung zu haben (!!) habe ich Code hier aus diesem Thread verwendet um mal eben einen Login in meinem Forum nachzubilden...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, IdMultipartFormData;

type
  TForm3 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Memo1: TMemo;
    IdHTTP1: TIdHTTP;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
var
  data: TIdMultiPartFormDataStream;
begin
  if trim(edit1.Text) <> '' then begin
    if trim(edit2.Text) <> '' then begin
      data := TIdMultiPartFormDataStream.Create;
      try
        data.AddFormField('username', edit1.Text);
        data.AddFormField('passwort', edit2.text);
        Memo1.Lines.Text := form3.IdHTTP1.Post('http://www.hdro-die-schwarze-hand.de/maier1990.php', data);
       finally
        data.Free;
      end;
    end;
  end;
end;

procedure TForm3.FormShow(Sender: TObject);
begin
  memo1.Clear;
end;

end.



Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
<?php
$sqlhost = "******";
// Username und Passwort zum einloggen in den Datenbankserver
$sqluser = "******";
$sqlpassword = "******";
// Name der Datenbank
$sqldb = "******";

$conn = mysql_connect($sqlhost, $sqluser, $sqlpassword);
mysql_select_db($sqldb, $conn);

header("Content-Type: text/plain");
if (isset($_REQUEST['username'])) $username = mysql_real_escape_string($_REQUEST['username']); else $username = "";
if (isset($_REQUEST['passwort'])) $passwort = mysql_real_escape_string($_REQUEST['passwort']); else $passwort = "";
if (($username != "") AND ($passwort != "")){
  $result = mysql_query("SELECT * FROM bb1_users WHERE username='".$username."' AND password='".md5($passwort)."';") OR die("MySQL-Fehler: ".mysql_error());
  $c = 0;
  while ($row = mysql_fetch_array($result)){
    if ($row["password"] != md5($passwort)){
      echo("Fehler beim Login");
      exit;
    } else {
      $c++;
      if ( (int) $row["activation"] == 1){
        echo("Erfolgreich Eingelogt");
      }  else if ( (int) $row["aktiviert"] == 0){
        echo("Noch Nicht Aktiviert");
      } else {
        echo "Sollte nicht auftreten :D";
      }
    }
  }
  if ($c == 0){
    echo "Login nicht möglich. Username und/oder Passwort falsch";
  }    
}
echo "\r\n";
print_r($_REQUEST);
?>


snap00022

Fazit: DOCH, das mit dem data-Array war so schon ok (glaube seite 4 hier im thread)! :D
Man muss es halt nur richtig machen.

Noch ein Edit für Alf:
Zur Erklärung... Du schriebst, das das mit dem data-Array falsch ist und er müsse es anders übergeben (script.php?var1=x&var2=y). Was du DA aber machst ist nichts anderes als einen Request per _POST abzusenden, die ganzen Werte jedoch per _GET zu übergeben.
Wenn du das SO machst, dann kannst du dir den POST sparen. Ein Loginformular, welches auf einer Seite eingebunden ist wirst du nicht überwinden können, wenn da eine genaue Prüfung auf POST oder GET erfolgt.

Mit meinem Beispiel hier werden die Werte wirklich als Post übermittelt. Nicht als GET in einem POST-aufruf.

Also: Ab in Die Ecke mit Dir! :-)

Ich programmiere erst 2 Jahre Delphi aber 12 Jahre lang mit PHP...


Jakob_Ullmann - Fr 19.02.10 19:42

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Herr Gott, erbarmt sich denn niemand, der ihm mal das Script und zum Script passenden Delphi Code schreibt? :mrgreen:


:beer:

@ALF: Ich dachte, du weißt den Unterschied zwischen post und get?


ALF - Fr 19.02.10 20:14

Kurze Antwort: bin auf arbeit und kann nicht weitermachen:

Das globale Spezial-Array $_REQUEST enthält alle über die Mechanismen Cookie, POST oder GET übergebenen Variablen.

Aber Achtung: Diese Methode sollten Sie nur dazu verwenden, ein altes Programm schnell wieder flott zu bekommen. Es ist immer besser, gezielt via $_GET, $_POST oder $_COOKIE die Übergabemethode zu referenzieren.
und wie geht das DonManfred? solltest Du doch wissen!
und schon sind wir glaube ich wieder bei meiner Aussage oder?

bin erst 23:30 zu Hause :wink:

Gruss Alf


Delete - Fr 19.02.10 20:50

Thx donmanfred
Habs mir mal angeschaut aber is nur reines Wirwar muss ich mich heut abend wen ich allein
bin nochmal drüber sitzen.
Hab die Daten mal abgeändert und auf meins angepasst, aber wieso kommt immer folgender fehler?

Login nicht möglich. Username und/oder Passwort falsch
Array
(
[username] => 111
[passwort] => 111

Edit:

Und was passieren sollte wen user und pw richtig is des trag ich wohl hier ein oder:

Delphi-Quelltext
1:
2:
3:
if trim(edit1.Text) <> '' then begin
    if trim(edit2.Text) <> '' then begin
      data := TIdMultiPartFormDataStream.Create;


DonManfred - Fr 19.02.10 21:47

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Kurze Antwort: bin auf arbeit und kann nicht weitermachen:
Das globale Spezial-Array $_REQUEST enthält alle über die Mechanismen Cookie, POST oder GET übergebenen Variablen.
Aber Achtung: Diese Methode sollten Sie nur dazu verwenden, ein altes Programm schnell wieder flott zu bekommen. Es ist immer besser, gezielt via $_GET, $_POST oder $_COOKIE die Übergabemethode zu referenzieren.


Ja, das ist korrekt. Auf die schnelle (hatte ja keine Zeit) zusammen geschustert funktioniert es mit _REQUEST aber auch. Macht aber auch keinen Unterschied. Die DATEN wurden ja per _POST übermittelt. Aber ich ändere es gerne nochmal für dich ab, wenn du das möchtest.

Ändert aber nichts an der Tatsache, das du schriebst die vorgehensweise von maier wäre TOTAL FALSCH; was sie aber nicht ist. Sie funktioniert sehr wohl so wie gewollt und nur das wollte ich mit meinem Beispiel beweisen.

Aber bitte, hier eine Fassung die auf _POST prüft:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
<?php
$sqlhost = "****";
// Username und Passwort zum einloggen in den Datenbankserver
$sqluser = "***";
$sqlpassword = "***";
// Name der Datenbank
$sqldb = "***";

$conn = mysql_connect($sqlhost, $sqluser, $sqlpassword);
mysql_select_db($sqldb, $conn);

header("Content-Type: text/plain");
if (isset($_POST['username'])) $username = mysql_real_escape_string($_POST['username']); else $username = "";
if (isset($_POST['passwort'])) $passwort = mysql_real_escape_string($_POST['passwort']); else $passwort = "";
if (($username != "") AND ($passwort != "")){
  $result = mysql_query("SELECT * FROM bb1_users WHERE username='".$username."' AND password='".md5($passwort)."';") OR die("MySQL-Fehler: ".mysql_error());
  $c = 0;
  while ($row = mysql_fetch_array($result)){
    if ($row["password"] != md5($passwort)){
      echo("Fehler beim Login");
      exit;
    } else {
      $c++;
      if ( (int) $row["activation"] == 1){
        echo("Erfolgreich Eingelogt");
      }  else if ( (int) $row["aktiviert"] == 0){
        echo("Noch Nicht Aktiviert");
      } else {
        echo "Sollte nicht auftreten :D";
      }
    }
  }
  if ($c == 0){
    echo "Login nicht möglich. Username und/oder Passwort falsch";
  }    
}
echo "\r\n";
print_r($_POST);
?>


Die kannste genau so gut verwenden. An der funktionsweise ändert das nichts.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Thx donmanfred
Hab die Daten mal abgeändert und auf meins angepasst, aber wieso kommt immer folgender fehler?

Login nicht möglich. Username und/oder Passwort falsch
Array
(
[username] => 111
[passwort] => 111


Weil kein Datensatz gefunden wurde der passen würde. Username und/oder passwort sind halt falsch. Aber am besten zeigst du mal den aktuellen PHP-Quelltext, den Du verwendest... Ich möchte mich nicht drauf verlassen, das du meinen code korrekt angepasst hast!


user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:

Und was passieren sollte wen user und pw richtig is des trag ich wohl hier ein oder:

Delphi-Quelltext
1:
2:
3:
if trim(edit1.Text) <> '' then begin
    if trim(edit2.Text) <> '' then begin
      data := TIdMultiPartFormDataStream.Create;


Das, mein lieber, sind mal wieder GRUNDLAGEN der 1. Klasse!

Ich prüfe bei Button-Klick ob beide Eingabefelder befüllt sind und nur dann mache ich den Aufruf...

Deine Abfrage in delphi war, denke ich, doch so ok... Nur die Verbindung zwischen delphi und php war fehlerhaft bei Dir.

PS: Mein Script ist nur ein Beispiel INKL debug-ausgaben! Die zwei Zeilen

Quelltext
1:
2:
echo "\r\n";
print_r($_POST);


schmeisst du am besten raus. ABER poste erstmal aktuelle PHP- und Delphi-Code-Versionen...


BenBE - Fr 19.02.10 22:13

Ich sag bei dem PHP-Script mal SQL-Injection ...


Delete - Fr 19.02.10 22:16

Php Script:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
<?php
$sqlhost = "xxxxxxxxx";
// Username und Passwort zum einloggen in den Datenbankserver
$sqluser = "xxxxxxxxx";
$sqlpasswort = "xxxxxxx";
// Name der Datenbank
$sqldb = "kd10135_db1";

$conn = mysql_connect($sqlhost, $sqluser, $sqlpasswort);
mysql_select_db($sqldb, $conn);

header("Content-Type: text/plain");
if (isset($_REQUEST['username'])) $username = mysql_real_escape_string($_REQUEST['username']); else $username = "";
if (isset($_REQUEST['passwort'])) $passwort = mysql_real_escape_string($_REQUEST['passwort']); else $passwort = "";
if (($username != "") AND ($passwort != "")){
  $result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$username."' AND passwort='".md5($passwort)."';") OR die("MySQL-Fehler: ".mysql_error());
  $c = 0;
  while ($row = mysql_fetch_array($result)){
    if ($row["passwort"] != md5($passwort)){
      echo("Fehler beim Login");
      exit;
    } else {
      $c++;
      if ( (int) $row["activation"] == 1){
        echo("Erfolgreich Eingelogt");
      }  else if ( (int) $row["aktiviert"] == 0){
        echo("Noch Nicht Aktiviert");
      } else {
        echo "Sollte nicht auftreten :D";
      }
    }
  }
  if ($c == 0){
    echo "Login nicht möglich. Username und/oder Passwort falsch";
  }    
}

?>


Delphi:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  data: TIdMultiPartFormDataStream;
begin
  if trim(edit1.Text) <> '' then begin
    if trim(edit2.Text) <> '' then begin
      data := TIdMultiPartFormDataStream.Create;
      try
        data.AddFormField('username', edit1.Text);
        data.AddFormField('passwort', edit2.text);
        Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);
       finally
        data.Free;


Vorher hab ich es mal so probiert:

Delphi-Quelltext
1:
2:
if (Edit1.Text) = '238236' then 
Form2.Showmodal;

lg


DonManfred - Fr 19.02.10 22:16

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Ich sag bei dem PHP-Script mal SQL-Injection ...


Und was, glaubst Du, da injecten zu können? Ich gebe dir die Antwort: NICHTS!

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

@maier1990: Das sieht für mich ok aus. Wenn da die Meldung kommt, das Username und/oder passwort falsch sind, dann sind sie das ODER das Passwort ist nicht, wie hier im thread beschrieben, mit md5 codiert in der db...

Evtl. magst du mal ein backup der tabelle mit phpmyadmin machen (MIT Daten) und mir das per pn senden. Dann werden wir evtl. schlauer...


Delete - Fr 19.02.10 22:29

Ja oke werd ich sofort machen
aber freut mich das ich wenigstens enimal ne kleine sache richtig machen konnte :-)


Robert.Wachtel - Fr 19.02.10 22:35

user profile iconDonManfred hat folgendes geschrieben Zum zitierten Posting springen:
[...] Und was, glaubst Du, da injecten zu können? Ich gebe dir die Antwort: NICHTS!

http://webthreads.de/2007/10/did-you-really-name-your-son-robert-drop-table-students/ :mrgreen:


DonManfred - Fr 19.02.10 23:00

user profile iconRobert.Wachtel hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconDonManfred hat folgendes geschrieben Zum zitierten Posting springen:
[...] Und was, glaubst Du, da injecten zu können? Ich gebe dir die Antwort: NICHTS!

http://webthreads.de/2007/10/did-you-really-name-your-son-robert-drop-table-students/ :mrgreen:


Netter Gag (klasse sogar :D) aber was willst Du damit ausdrücken?

Das der Name ->Robert'); DROP TABLE Students;<- zu einer SQL-Injection führen würde in obigem Script?

Möööp! Dickes Fettnäppchen...

Der Name ->Robert'); DROP TABLE Students;<- würde durch das mysql_real_escape_string zu ->Robert\'); DROP TABLE Students;<- und DAS, mein lieber, kann durchaus in dem SQL so an die DB gesendet werden. Ok, den User gibt es so nicht aber das verhalten des Scripts würde dadurch nicht beeinflusst (es wird halt kein passender User gefunden). Auch nicht, wenn man table students durch die richtige Tabelle ersetzen würde.

Und nu?


BenBE - Fr 19.02.10 23:15

Ich weiß, warum ich Prepared Statements in PHP einsetze: Da sind solche sachen eindeutig.

Um deine Frage aber dennoch zu beantworten: Es gab da (auch in mysql_real_escape_string) durchaus schon Bugs, wo der nicht getan hat, was er tun sollte und man in gewissen Konstellationen da durchaus auch mit diesem Source injekten hätte können.

Mal ganz davon abgesehen, dass der PHP-Source wie dahergekrotzt aussieht ...

€: Konkret waren das soweit ich das überblicke glaube http://bugs.mysql.com/bug.php?id=41730 und/oder http://bugs.mysql.com/bug.php?id=22243 Wirklich schützt es aber nur, wenn man konsequent Befehl und Daten voneinander trennt. Daher auch mein expliziter Hinweis hier.


DonManfred - Fr 19.02.10 23:32

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:

Um deine Frage aber dennoch zu beantworten: Es gab da (auch in mysql_real_escape_string) durchaus schon Bugs, wo der nicht getan hat, was er tun sollte und man in gewissen Konstellationen da durchaus auch mit diesem Source injekten hätte können.

Mal ganz davon abgesehen, dass der PHP-Source wie dahergekrotzt aussieht ...


Ich hab den Code von maier übernommen und den nur leicht erweitert. Für mich würd ich da einiges anders machen.

Aber danke für den Hinweis; bin bisher aber eigentlich immer gut gefahren mit mysql_real_escape_string


Delete - Fr 19.02.10 23:37

Mist, verloren. Ich hatte auf nicht unter 10 Thread Seiten gewettet.


Delete - Sa 20.02.10 00:10

@ Luckie
Es gibt noch Hoffnung für dich ich hab schon wieder ein Problem weis aber nich ob des in diesen oder in einen neuen Thread gehört
Folgendes:
Ich benutze dank DonManfred diesen Php Code:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
<?php
$sqlhost = "dedi670.your-server.de";
// Username und Passwort zum einloggen in den Datenbankserver
$sqluser = "kd10135_1";
$sqlpasswort = "U42CHrx8";
// Name der Datenbank
$sqldb = "kd10135_db1";

$conn = mysql_connect($sqlhost, $sqluser, $sqlpasswort);
mysql_select_db($sqldb, $conn);

header("Content-Type: text/plain");
if (isset($_REQUEST['username'])) $username = mysql_real_escape_string($_REQUEST['username']); else $username = "";
if (isset($_REQUEST['passwort'])) $passwort = mysql_real_escape_string($_REQUEST['passwort']); else $passwort = "";
if (($username != "") AND ($passwort != "")){
  $result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$username."' AND passwort='".md5($passwort)."';") OR die("MySQL-Fehler: ".mysql_error());
  $c = 0;
  while ($row = mysql_fetch_array($result)){
    if ($row["passwort"] != md5($passwort)){
      echo("Fehler beim Login");
      exit;
    } else {
      $c++;
      if ( (int) $row["aktiviert"] == 1){
        echo("Erfolgreich Eingelogt");
      }  else if ( (int) $row["aktiviert"] == 0){
        echo("Noch Nicht Aktiviert");
      } else {
        echo "Sollte nicht auftreten :D";
      }
    }
  }
  if ($c == 0){
    echo "Login nicht möglich. Username und/oder Passwort falsch";
  }    
}

?>


Mein Delphi Quellcode sieht so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
  data: TIdMultiPartFormDataStream;
begin
  if trim(edit1.Text) <> '' then begin
    if trim(edit2.Text) <> '' then begin
      data := TIdMultiPartFormDataStream.Create;
      try
        data.AddFormField('username', edit1.Text);
        data.AddFormField('passwort', edit2.text);
        Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);
       finally
        data.Free;
end;


Bei Donmanfred klappt es Erfolgreich.
Ich wen mich versuch einzuloggen kommt immer folgender fehler:

Login nicht möglich. Username und/oder Passwort falsch

DonManfred hat meinen Quelltext angeschaut und sagte das sei alles richtig so und wens er bei ihm macht ginge es.
Wisst ihr wieso es nicht geht?
lg


Delete - Sa 20.02.10 00:28

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Wisst ihr wieso es nicht geht?

Nein, aber du könntest es selber rausfinden, in dem du den Code einfach mal debuggst.


ALF - Sa 20.02.10 00:30

Du user profile iconDonManfred HAST JA RECHT mit $_POST und seiner Übergabe in Delphi.
Es sollte Maier1999 zum Denken und lesen anregen, wie PHP überhaupt funktioniert, via php Hilfe usw.
Dort steht alles drin mit Beispiele! er will aber nicht.
Du gibst ihn Code mit $_REQUEST und er macht wieder COPY & PASTE ohne zu lernen.
Später schreibt er, Seite wurde gehackt usw. und versteht nicht warum!
Er will halt ein Haus bauen ohne Fundament und Wände.
Er wird auch nicht verstehen warum man $_REQUEST nicht nehmen soll!

Egal was wir ihm anbieten, er will nur fertigen Code. Ob er richtig ist oder nicht!
Kaum hatt er einen C&P kommt, irgendwas funct nicht!

Unsere Bemühungen fruchten nicht bei ihm, schade :?

Gruss Alf


Xion - Sa 20.02.10 00:33

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Unsere Bemühungen fruchten nicht bei ihm, schade :?


Warum machst du denn nicht das Jobangebot von ihm? Verlangst paar Euros und alle währen zufrieden.


Delete - Sa 20.02.10 00:35

Es is ja so das es bei DonManfred erfolgreich geht mit genau den gleichen
php quellcode und php script wie ich habe


Xion - Sa 20.02.10 00:38

Damit ist ja eigentlich klar, dass wir nichts machen können...da es ja an sich funktioniert. Du musst halt selbst mal gucken wo der Fehler ist, indem du eben Werte mit ausgibst / Breakpoints machst usw...debuggen halt


Delete - Sa 20.02.10 00:42

ja aber wen es woanders geht müsst es doch bei mir auch gehn


COMMANDER86 - Sa 20.02.10 00:45

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Es is ja so das es bei DonManfred erfolgreich geht mit genau den gleichen
php quellcode und php script wie ich habe


user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
ja aber wen es woanders geht müsst es doch bei mir auch gehn


Korrekt. So sollte es sein. Das kann nur bedeuten, dass DonManfred etwas hat, was Du nicht hast. Vielleicht nur eine winzige Einstellung irgendwo. Xion und Luckie haben vollkommen recht: Das können wir hier nicht reproduzieren. Bloß Deine Ausgaben vom Debbuging bringen das an dieser Stelle weiter.

LG
Fabian


Xion - Sa 20.02.10 00:46

nö, nicht unbedingt. Was meinst du warum die Software-Firmen unmengen verschiedene Rechner mit verschiedenen Betriebssystemen rumstehen haben zum Testen?

Wie gesagt, ich kenne mich mit PHP nicht aus, aber vermutlich kannst du da einiges am Server einstellen und ruck zuck geht dann irgendwas nicht mehr. Dazu muss man sich dann halt auskennen um rauszufinden woran es liegt und ferndiagnose ist dann meist auch schwer.

//Du warst nur schneller weil mein Server mich dauernd ausm Forum kickt und ich mich erst anmelden musste :motz: ;)


Marc. - Sa 20.02.10 00:51

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
<?php
$sqlhost = "dedi670.your-server.de";
// Username und Passwort zum einloggen in den Datenbankserver
$sqluser = "kd*******";
$sqlpasswort = "U4******"/*Anmerkung: Daten im Zitat sicherheitshalber unkenntlich gemacht*/
// Name der Datenbank
$sqldb = "kd*******";

In diesem Fall wäre eine SQL-Injection absolut überflüssig. :shock:
Ich hoffe diese Daten gehören zu keiner schützenswerten MySQL-DB, ich kann mich damit nämlich problemlos einloggen...


COMMANDER86 - Sa 20.02.10 00:54

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
nö, nicht unbedingt. Was meinst du warum die Software-Firmen unmengen verschiedene Rechner mit verschiedenen Betriebssystemen rumstehen haben zum Testen?


Wenn nicht gerade der Kunde die Testabteilung übernimmt. Da gibt es ja auch ein paar Paradebeispiele.

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
//Du warst nur schneller weil mein Server mich dauernd ausm Forum kickt und ich mich erst anmelden musste :motz: ;)


Das ich mit der 1k-Leitung mal jemanden toppe... cool. ^^ ;)

Sorry 4 OT & LG
Fabian


Delete - Sa 20.02.10 00:56

ne is nich so willd is fast nix mehr oben auf db
aber die anderen des mit dem server wen bisschen was umgestellt wurde das es
dan nicht mehr gehen könnte kapier ich ja, aber DonManfred hat des Programm nachgebaut mit den gleichen Quellcode wie ich und des gleiche Php Script und hats über meine Db probiert
deswegen verstehe ich es ned


COMMANDER86 - Sa 20.02.10 00:58

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
ne is nich so willd is fast nix mehr oben auf db
aber die anderen des mit dem server wen bisschen was umgestellt wurde das es
dan nicht mehr gehen könnte kapier ich ja, aber DonManfred hat des Programm nachgebaut mit den gleichen Quellcode wie ich und des gleiche Php Script und hats über meine Db probiert
deswegen verstehe ich es ned


Jetzt mal ganz blöd... ich kenne mich mit solchen Verbindungen nicht wirklich aus. Aber könnte ein Virenscanner / Firewall da irgendwas mit zu tun haben? Mal so als Frage in die Runde...

LG
Fabian


elundril - Sa 20.02.10 00:59

Klar könnte. Wäre ja ne scheiß firewall wenn man trotzdem connections ins internet aufbauen kann.

lg


ALF - Sa 20.02.10 01:00

user profile iconXion hat folgendes geschrieben:
Warum machst du denn nicht das Jobangebot von ihm? Verlangst paar Euros und alle währen zufrieden.

und er stellt sich, wo auch immer, mit seinem Prog vor!?.
Ohne verstanden zu haben was er codet oder von anderen bekommt!
Ist ja in fast allen seiner Threads zu erkennen.

Er macht einfach zu viel auf einmal, siehe sein "Mail versenden ohne Outlook"
ER hatt das eine nicht kapiert und posted schon wieder einen neuen Fehler!
Wie will er da was lernen, mit fertigen Code von uns!?

Ist das unsere Hilfe :?:

Glaube ich nicht :wink:

Gruss Alf

Moderiert von user profile iconNarses: Zitat-Syntax angepasst.


Delete - Sa 20.02.10 01:03

Habe virenscanner ausgeschaltet aber der war nicht schuld daran.
Und mit dem Mail client hab ich ja gecheckt.


Delete - Sa 20.02.10 01:04

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
ne is nich so willd is fast nix mehr oben auf db
aber die anderen des mit dem server wen bisschen was umgestellt wurde das es
dan nicht mehr gehen könnte kapier ich ja, aber DonManfred hat des Programm nachgebaut mit den gleichen Quellcode wie ich und des gleiche Php Script und hats über meine Db probiert
deswegen verstehe ich es ned

Was will uns der Autor damit sagen? Hat das jemand verstanden? Ich nicht.


Xion - Sa 20.02.10 01:08

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Habe virenscanner ausgeschaltet aber der war nicht schuld daran.


Was kommt denn beim Server an? Das fragen wir schon seit paar Seiten...das können wir nicht wissen ^^


elundril - Sa 20.02.10 01:10

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
ne is nich so willd is fast nix mehr oben auf db
aber die anderen des mit dem server wen bisschen was umgestellt wurde das es
dan nicht mehr gehen könnte kapier ich ja, aber DonManfred hat des Programm nachgebaut mit den gleichen Quellcode wie ich und des gleiche Php Script und hats über meine Db probiert
deswegen verstehe ich es ned

Was will uns der Autor damit sagen? Hat das jemand verstanden? Ich nicht.


tja, generation ADHS und SMS. für ganze sätze zu faul und für grammatik zu cool.

Also:

Es würde nichts machen wenn einer auf dieser Datenbank mit diesen Zugangsdaten herumfuhrwerkt da diese nur zu testzwecken dient. Auf dem echten Server kann man sich dann nicht mehr mit diesen Daten einloggen.

Das Problem ist, dass wenn ich den Quellcode von DonManfred so ändere das es auf dem richtigen Server laufen soll, funktioniert es nicht. Und ich verstehe nicht warum.

Mfg,
die zwischengeneration ;)


Xion - Sa 20.02.10 01:13

sicher? Also ich versteh da was ganz andres aus dem Absatz...

Der Code geht wenn ihn DonManfred ausführt sogar auf dem selben Server, aber sobald Maier1990 ihn verwendet geht er nicht.


COMMANDER86 - Sa 20.02.10 01:17

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Habe virenscanner ausgeschaltet aber der war nicht schuld daran.


Okay. Firewall auch?

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Und mit dem Mail client hab ich ja gecheckt.


Das gehört zu dem Anti-Outlook-Thread, oder?

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
[...]
Er macht einfach zu viel auf einmal, siehe sein "Mail versenden ohne Outlook"
ER hatt das eine nicht kapiert und posted schon wieder einen neuen Fehler!
Wie will er da was lernen, mit fertigen Code von uns!?

Ist das unsere Hilfe :?:

Glaube ich nicht :wink: [...]


@maier1990:

Wie Du siehst, ist es hier nicht üblich fertige Lösungen zu präsentieren. Es ist eher die Intention den Lerneffekt, den "Aha-Moment" zu fördern. Deswegen bekommst Du die zahlreichen Hinweise und Beispiele... Codeschnipsel, die Dich immer wieder vor ein Rätsel stellen. Jeder hier kann sicherlich nachvollziehen, dass Du gerne einen Erfolg erzielen möchtest und das Programm fertig stellen willst.

In diesem Thread gab' es, für meine Begriffe, ziemlich wenige Hinweise auf Suchmaschinen, Hilfefunktionen und die Forensuche. Auch wenn ich mich nun auf dünnen Eis hier bewege, wenn ich Folgendes ausspreche: Es gibt auch noch andere Foren... das heißt nicht, dass Du Cross-Postings erstellen sollst. Aber Du bist sicherlich nicht alleine auf dieser Welt mit diesem Problem.

Du kommst immer wieder einen Schritt weiter: Schau' mal, wo Du gestern warst. Was wir Dir mitgeben wollen ist ein Stück weit Selbstständigkeit. Die Selbstständigkeit Fehler zu finden und zu beheben. Es scheint so, als würdest Du auf Lösungsvorschläge warten. Wenn Du einen bekommst, probierst / kopierst Du es aus und sagst geht nicht... und dann wartest Du wieder auf eine Antwort.

Sorry... das wollte ich einfach mal loswerden. Bitte nicht böse sein.

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
sicher? Also ich versteh da was ganz andres aus dem Absatz...

Der Code geht wenn ihn DonManfred ausführt sogar auf dem selben Server, aber sobald Maier1990 ihn verwendet geht er nicht.


Das war auch meine Interpretation.

LG
Fabian


Delete - Sa 20.02.10 01:19

Ja ich versteh des schon und werde auch in zukunft mehr eigeninitative zeigen
und mein problem ist so wie Xion schildert.
lg


elundril - Sa 20.02.10 01:20

PWND!!! SEITE 10! :D YOU CAN NEVER BE THIS AWESOME!!! :mrgreen:

Sorry for OT


COMMANDER86 - Sa 20.02.10 01:24

user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
PWND!!! SEITE 10! :D YOU CAN NEVER BE THIS AWESOME!!! :mrgreen:

Sorry for OT


WTF!? Geile Nummer! XD

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Ja ich versteh des schon und werde auch in zukunft mehr eigeninitative zeigen
und mein problem ist so wie Xion schildert.
lg


Okay... dann bleibt mir die Frage, wie Du "in Zukunft" definierst.

Aber mal OT zur Seite: Firewall?

LG
Fabian


Delete - Sa 20.02.10 01:27

Zukunft heisst bei den nächsten Threads
Firewall hab ich keine an


COMMANDER86 - Sa 20.02.10 01:32

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Zukunft heisst bei den nächsten Threads

Also nicht in diesem? ;)

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Firewall hab ich keine an

Okay... sorry, wenn ich so penibel nachfrage...: Windows Firewall auch?

LG
Fabian


Delete - Sa 20.02.10 01:33

Ja kein ding darfste schon ;-)
Windows Firewall ist bei mir immer aus
Kurz und Bündig. ja ist aus


COMMANDER86 - Sa 20.02.10 01:51

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Ja kein ding darfste schon ;-)
Windows Firewall ist bei mir immer aus
Kurz und Bündig. ja ist aus


Okaaaay... dann fackeln wir mal die grundsätzlichen Fehlerquellen ab, die so ein Windows-Rechner bereit hält. Die lassen sich recht einfach ausklammern... also:

1. Manche Komponenten (ich kenne die nicht, die Du verwendest... leb' da in einer anderen Welt ;) ) nutzen Instanzen vom IE. Browser Cache mal geleert? Temporäre Internetdateien gelöscht, Verlauf etc... (alles vom IE) alles mal cleanen. Das Dingen speichert mehr, als man glaubt.
2. Auch wenn es unwahrscheinlich ist. Vielleicht ist irgendwas im Wege... Outlook, ICQ, MSN... einfach mal alles ausschalten, was eine Dauerverbindung ins Netz herstellen kann (und es evt. auch tut).
4. Rechner mal neu gestartet? "Reboot - tut gut." Windows ist eigen.
8. Überleg' mal, ob Du an Deinem System irgendwelche Einstellungen vorgenommen hast, die nicht jeder macht... irgendwas utopisches... exotisches... irgendwas, was ein Insider ist, um das letzte aus dem Stück Tütenblech rauszuholen... irgendwas, was der Kollege, bei dem es funktioniert, nicht haben könnte?
16. Netzwerkeinstellungen? Hast Du einen DNS eingetragen, der nicht zu Deinem Provider gehört? Proxy-Einstellungen?

Im Zweifelsfall mal nach jeden Versuch neu starten... Windows ist eigen.

PS: Meine Wurzeln liegen im BenutzerService... First-Level-Support... was ich mit 98% Sicherheit sagen kann, ist das der Neustart eines Windows-Rechner's (egal, welche Version) 90% aller Probleme behebt. ;)

LG und viel Erfolg!
Fabian


Delete - Sa 20.02.10 01:54

Ok Dankeschön werde ich gleich machen


BenBE - Sa 20.02.10 02:02

Also soweit ich das Sehe, funktioniert das Script ja nicht mal, wenn man es direkt im Browser aufruft ...


Delete - Sa 20.02.10 02:20

@commander

ich hab jetzt alle deine punkte befolgt leider ohne erfolg.
Es kommt immer noch der gleiche Fehler
zu Punkt 8. und 16.
Nee ich hab an meinen System nichts verändert ich habs auch auf meinen Netbook Probiert und auf den Pc von meinen Dad da ich dachte es könnte evtl. am Betriebssystem liegen.
Aber auch leider ohne erfolg.

@Benbe
wieso sollte es nicht funktionieren?

lg


COMMANDER86 - Sa 20.02.10 02:24

Hätt' ja klappen können... BenBe's Antwort ließ mich einen Misserfolg allerdings schon vermuten.

Hast Du das mal mit einem lokalen Webserver zB (XAMPP) probiert?


BenBE - Sa 20.02.10 02:25

Nehmen wir einmal diesen Link:
http://www.chiller4fun.de/login.php?username=test123&password=test123
So müsste ich im Browser eine entsprechende Ausgabe bekommen.

Ich erhalte aber eine weiße Seite.


Delete - Sa 20.02.10 02:31

Was heißt das genau? Das das php script falsch ist oder?
commander ne hab ich noch nicht gemacht


COMMANDER86 - Sa 20.02.10 02:33

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
[...]Ich erhalte aber eine weiße Seite.

Dito. (IE 7 - Win Vista Bus. 32b)

//EDIT:
user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
commander ne hab ich noch nicht gemacht

Das kann Dir helfen: So kannst Du eine gleichzeitige Testumgebung schaffen, mit deren Hilfe, Du Fehler evt. schneller finden kannst. Dann sind zumindest die Einstellungen vom Webserver nicht vorhanden.

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Was heißt das genau? Das das php script falsch ist oder?

Maybe... wenn es bei Don (hab' den Rest vergessen *sry*) allerdings funktioniert, ist das eher unwahrscheinlich.

Du solltest mal gucken, was ein nicht editierter, frisch aufgesetzter Webserver, also eine lokale Installation von XAMPP, dazu sagt. Dann musst Du natürlich die Pfade für den Test anpassen.

LG
Fabian


Delete - Sa 20.02.10 02:44

Ja oke werd ich machen aber erst mal bisschen Abschalten
Ich berichte euch dan wieder ^^


ALF - Sa 20.02.10 02:46

Habt ihr euch mal im explorer/ansicht/quelltext angeschaut was er in sein code drin stehen hatt, wenn ihr seine Seite aufruft!
oder bin ich da blind!!!

Gruss Alf


BenBE - Sa 20.02.10 03:00

Jaja, bei soviel Webhostingkompetenz.de kein Wunder :P


COMMANDER86 - Sa 20.02.10 03:10

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Habt ihr euch mal im explorer/ansicht/quelltext angeschaut was er in sein code drin stehen hatt, wenn ihr seine Seite aufruft!
oder bin ich da blind!!!



Quelltext
1:
2:
3:
4:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type></HEAD>
<BODY><PRE></PRE></BODY></HTML>

Guter Einwand... die Seite ist irgendwie verdammt leer...


Delete - Sa 20.02.10 04:18

Jetzt will ich auch mal. :P

Mal was ganz einfaches: Einfach nur ein PHP Script, welches eine Variable per Post entgegen nimmt und einfach wieder ausgibt mit etwas Text drumherum. Und dazu der nötige Delphi Code um die Formulardaten zu senden.

Ziel Script auf dem Server login.php:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<?php
  $username = htmlspecialchars($_POST['username']);

  if (isset($username)){
    echo "Hallo $username. Wie geht es dir?";
  }
  else{
    echo "Variable nicht gesetzt";
  }
?>


Und der zugehörige Delphi Code:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm4.Button1Click(Sender: TObject);
var
  data: TStringList;
  s: String;
begin
  data := TStringList.Create;
  try
    data.Values['username'] := 'Erwin';
    try
      s := IdHTTP1.Post('http://www.michael-puff.de/login.php', data);
      ShowMessage(s);
    except
      on E: Exception do
        ShowMessage('Fehler: ' + E.Message);
    end;
  finally
    data.Free;
  end;
end;


So. DAS und nur DAS versuchst du jetzt mal zum Laufen zu bringen. Und zwar komplette inklusive der Fehlerbehandlung, damit du siehst, was passiert, wenn ein Fehler auftritt. Wenn kein Fehler auftritt, sollte der Dialog den Text "Hallo Erwin. Wie geht es dir?" ausgeben. Ansonsten entweder "Variable nicht gesetzt" oder eine Exception Meldung von den Indys, wenn schon das Senden fehlgeschlagen ist. (Genau das ist nämlich das Problem aller bisher geposteten Beispielcodes: Die fehlende Fehlerbehandlung. Und dann kommt es natürlich zu Fehlerbeschreibungen wie: "Funktioniert nicht".)

Wenn das klappt, dann meldest du dich wieder hier. Der Code ist getestet und funktioniert mit dem Script auf meinem Webspace. Auch die Fehlerbhandlung ist getestet und funktioniert.

http://www.michael-puff.de/Developer/Delphi/Code-Snippets/IdHTTP_Post.shtml

PS: Ich habe das zum ersten Mal mit Delphi und den Indys gemacht. Benötigte Zeit: 15 Minuten inklusive Google Suche. :? (Ich weiß, ich werde alt.)


DonManfred - Sa 20.02.10 14:04

Also dann will ich auch noch mal.

Also: Ich habe mir gestern von maier sein komplettes Projekt samt db-dump schicken lassen und php-script.
Ich habe hier sein Projekt mit delphi2006 kompiliert. Anfänglich war noch ein falscher Name in der php aber nachdem das behoben wurde klappte es dann auch bei mir. Am Delphi-Quelltext hab ich nichts verändert, nur kompiliert.

Zu euren anregungen:
- firewall: Kann nicht schuld sein, weil definitiv eine Antwort vom PHP-Script im Programm ankommt. Und zwar kommt eine Meldung die nur dann erscheint, wenn Username UND Passwort nicht leer sind und beide über _POST übermittelt wurden...
- Virenscanner: siehe firewall

Der Unterschied liegt darin, das er Delphi 7 und ich 2006 einsetze.

Das war dann der Zeitpunkt an dem ich mit meinem Latein am ende war... Der PHP-Code und Delphi-Code passte zusammen, bei ihm schienen aber scheinbar nicht genau das eingegebene per Post übermittelt worden zu sein, bei mir schon.

Arbeiten die Indy-Komponenten unter Delphi 7 anders als unter 2006? Also codieren die den Text irgendwie anders? Der verwendete username und passwort waren jeweils test123. Umlautkonvertierung kann also nicht das Problem sein.

@maier:
Pack in die PHP-Datei ans Ende (zwischen "}" und "?>") nochmal die Zeilen:


Quelltext
1:
2:
3:
4:
echo "\r\n";
print_r($_POST);
print_r($_GET);
print_r($_REQUEST);


und logge dich dann nochmal ein. Poste dann hier mal den kompletten Inhalt der memo1 (brauchst auch nichts ausXXsen, Daten sind hier ja nun bekannt :D)


Delete - Sa 20.02.10 17:16


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
Login nicht möglich. Username und/oder Passwort falsch
Array
(
    [username] => 1212
    [passwort] => 1212

)
Array
(
)
Array
(
    [username] => 1212
    [passwort] => 1212

)


Hey
Habs nun so gemacht wie du beschrieben hast DonManfred aber mehr al wie oben steht wird nicht angezeigt
Lg


BenBE - Sa 20.02.10 17:18

Versuch mal statt 1212/1212 als Login Username 123 mit Passwort 123. Vielleicht hilft das ja ;-)

Zeig ggf. auch mal die Zwischenschritte deines Scripts mit an? Was sagt er da bzgl. Username und Passwort? Welche Datensätze findet er?


DonManfred - Sa 20.02.10 17:27

Wieso 1212? Ist der Username und Passwort in der db nicht test123?? *verwirrt*


Delete - Sa 20.02.10 17:43

ja sorry hab mich neu registriert und wollt es testen

user:1212
pw:1212 geht nicht
user:123
pw:123 geht nicht
user:test123
pw:test123 geht auch nicht
lg


Delete - So 21.02.10 13:47

Hi

@Luckie
Wenn ich dein Beispiel mache von Seite 10 und ich in Delphi auf den Button drücke,
wird der gesamte Code vom Php Script ausgegeben.
Also der:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<php
  $username = htmlspecialchars($_POST['username']);

  if (isset($username)){
    echo "Hallo $username. Wie geht es dir?";
  }
  else{
    echo "Variable nicht gesetzt";
  }
?>


Lg


Jakob_Ullmann - So 21.02.10 15:07

Du müsstest schon <?php statt <php schreiben. :wink:

:arrow: Das kommt von bloßem Copy-and-Paste!


Delete - So 21.02.10 15:23

:(

Jetz geht es. Wen ich jetzt den Button drücke kommt Hallo Erwin wie geht es dir?

Lg


elundril - So 21.02.10 15:25

:shock: Amazing, es funktioniert. So und mit der Grundlage kannst du ja jetzt weiterarbeiten, oder?

lg elundril


Delete - So 21.02.10 15:27

Ne eig. nicht so gut kenn ich mich nicht aus :(


ALF - So 21.02.10 16:10

Füge nun alle anderen Felder mit ein und prüfe ob sie zurückgelmeldet werden!
Wenn ja, hast Du alles richtig gemacht! :wink:

Und erst dann gehts mit der Datenbank weiter nicht vorher!!!!!

Gruss ALf


Xentar - So 21.02.10 16:12

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Und erst dann gehts mit der Datenbank weiter nicht vorher!!!!!

Tja, anscheinend nicht ;)
http://forum.delphi-treff.de/showthread.php?t=28421
Und mit keinem Wort erwähnt, dass das eigentlich nur von euch hier zusammenkopiert ist..


ALF - So 21.02.10 16:16

Ich wert nicht mehr :!:
Soll ich :cry: :cry: oder :autsch: oder :rofl:
Hilfeeeeeee
Gruss ALf


Delete - So 21.02.10 16:52

user profile iconJakob_Ullmann hat folgendes geschrieben Zum zitierten Posting springen:
Du müsstest schon <?php statt <php schreiben. :wink:

:arrow: Das kommt von bloßem Copy-and-Paste!

Ja, aber der Fehler lag bei mir. Allerdings hätte man es auch selber sehen könne, wenn man sich nur ein klein wenig mit PHP auskennt.


Jakob_Ullmann - So 21.02.10 17:22

user profile iconLuckie: Genau das meine ich. Und an der Ausgabe ist doch eigentlich schon zu vermuten, dass das Script entweder nicht als PHP erkannt wird oder dass es beim Webspace Probleme gibt. Zuerst geht man doch aber davon aus, dass mit dem Code irgendwas nicht stimmt und da auch PHP keinen Error ausgibt, kann das Problem nur an einer Stelle sein. Und es wurde so oft korrekt hier gepostet und er hat ja eine ganze Nacht lang PHP-Tutorials durchgearbeitet. Da sollte man eigentlich wissen, wie ein PHP-Abschnitt markiert wird. :wink:

user profile iconXentar: Ich sehe es gerade mit Schrecken. Eine Frechheit ist das.


Delete - Mo 22.02.10 23:42

@Xentar
Ich hab es mir nicht zusammenkopiert ich hab es schon so bekommen.
Kann mir den jetzt keiner Helfen?
lg


Delete - Mo 22.02.10 23:45

Noch schlimmer.

Wobei denn jetzt helfen? Nach elf Seiten habe ich so etwas den Überblick verloren. Funktioniert denn mein Code jetzt?


Delete - Mo 22.02.10 23:50

Ja dein code geht
wen ich den button dan Drücke wird Hallo Erwin wie geht es dir ausgegeben.
Bei DonManfred geht er bei mir nicht das kanns ja irgendwie nicht geben oder?
lg


Delete - Di 23.02.10 00:16

Dann mach doch mit meinem Code weiter. Den Unterschied/Fehler in dem anderen Code kannst du ja später suchen, wenn es dich noch interessiert.


Delete - Di 23.02.10 00:30

Ja aber wie soll ich weitermachen?


Delete - Di 23.02.10 00:34

Ja was fehlt denn noch? Das musst du doch wissen. Die Übergabe der restlichen Daten an das Script der Eintrag bzw. Abfrage der Datenbank und die Rückgabe. Und genau in der Reihenfolge machst du jetzt weiter und guckst immer, ob es auch funktioniert bevor du weiter machst.


Delete - Di 23.02.10 00:44

Ich kann des aber nicht :(


Delete - Di 23.02.10 00:49

Dann lernst du es eben. Und wie man die restlichen Daten übergibt sollte ja wohl kein Problem sein. Du hast ja meinen Code als Vorlage. Also wenn du das noch nicht mal hinbekommst, solltest du erst mal die aller nötigsten Grundlagen lernen bezüglich Delphi, PHP, wie Formulare in PHP funktionieren und wie man mit PHP Datenbanken abfragt. Wenn du das kannst, kannst du die Teile zusammensetzen.


Narses - Di 23.02.10 00:51

Moin!

So, wir sind also wieder beim Betteln angekommen :nixweiss: und ich muss sagen, mir reißt auch langsam (langsam? nach 11 Seiten? :roll:) der Geduldsfaden. :| Was dir fehlt, sind massenhaft Grundlagen, und bevor du dir die nicht angeeignet hast, hat das hier keinen Zweck. :idea: Deshalb mache ich erstmal zu. So hast du die Gelegenheit, dich nochmal intensiv mit den Grundlagen und den Tipps hier im Thread auseinanderzusetzen.

Du hast ja noch den Job-Börse-Thread, wenn du es nicht selbst machen kannst/möchtest/wasauchimmer. Wenn sich da keiner findet, solltest du über eine Erhöhung deines Angebots nachdenken. :!:

cu
Narses