Informationen von PHP zu BB senden?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

bruce85

Betreff: Informationen von PHP zu BB senden?

BeitragDi, März 20, 2007 1:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
also ich arbeite grad an einem Programm indem man sich einloggen muss, wenn man auf einloggen klickt, dann soll geprüft werden, ob die Daten in der MySQL Datenbank existieren, also Nick + Password, dass habe ich ja per PHP Script gelößt.
Aber ich weiss net wie ich es hinbekomme, das Blitz Basic dann eine Meldung ausgibt, wenn diese Daten richtig sind.

Hier mal den PHP Script von mir:

Code: [AUSKLAPPEN]
<?PHP

  $db_host = "**********";
  $db_name = "**********";
  $db_user = "**********";
  $db_pw = "**********";

  @mysql_connect($db_host, $db_user, $db_pw) or die ("0");
  @mysql_select_db($db_name) or die ("1");

  // abfrage der Daten
  $nick=$_GET["nick"];
  $password=md5($_GET["password"]);

  $check_nickname = mysql_fetch_row(mysql_query("SELECT * FROM eintraege WHERE nick='$nick' AND password='$password'"));
  if($check_nickname) {
    echo "<font face='Arial' color='008000'>Alles OK!</font>";
  } else {
    echo "<font face='Arial' color='FF0000'>Nickname oder Passwort ist falsch!</font>";
  }

?>


und hier den BB Code dazu:

Code: [AUSKLAPPEN]
If RectsOverlap(MouseX(),MouseY(),1,1,356,259,82,16) Then
  If MouseHit(1) And MouseDown(1) Then
    stream=OpenTCPStream("test.cn.funpic.de",80)
    If stream=0 Then Print "konnte nicht verbinden"
    WriteLine stream, "GET /login.php
nick="+nick$+"&password="+password$+" HTTP/1.1"
    WriteLine stream, "HOST: test.cn.funpic.de"
    WriteLine stream, ""
    While Not Eof(stream)
      DebugLog(ReadLine(stream))
    Wend
    CloseTCPStream(stream)
  EndIf
EndIf


und dann soll in BB eine meldung ausgegeben werden, ob diese Daten korrekt sind.
Ich weiss nur wie es in PHP geht, hab ich ja oben schon gepostet, aber wie überprüfe ich über BB, ob die daten korrekt sind?

Vielen Dank schonmal.

MfG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

Vertex

BeitragDi, März 20, 2007 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Dir ist aber schon klar, dass du mit PHP nicht gezwungen bist, HTML auszugeben?

Auch wenn es nicht zur Debatte steht:
Code: [AUSKLAPPEN]
"<font face='Arial' color='008000'>Alles OK!</font>

Den Font-Tag bitte nie wieder einsetzen ^^

Es ist quatsch per HTML die Ausgabe zu führen, da du einen HTML Parser benötigt.

Riesen Sicherheitslücke:
Der Nickname wird ohne Prüfung in den SQL Query eingeschleust. Hier mal ein Auszug aus meinem Server:
Code: [AUSKLAPPEN]
class cCheck
{
   // ...
   const ERR_INVALIDEMAIL       = "1005";
   const ERR_INVALIDNAME        = "1006";
   const ERR_INVALIDDESCRIPTION = "1007";
   // ...

   // ...

   // Prüft Namen
   static function Name($VarName, &$Value, $MinLength, $MaxLength)
   {
      if(!isset($Value) ||
         !ereg("^([0-9a-zA-Z_-]{".$MinLength.",".$MaxLength."})$", $Value))
      {
         cMeta::Error(self::ERR_INVALIDNAME." ".$VarName);
         return false;
      }
      return true;
   }

   // ..
}


Mit dieser cCheck Klasse prüfe ich alle Parameter bevor ich eine Verbindung zum MySQL Server herstelle.

Weiterhin solltest du die POST Methode benutzen. Damit schließt du schonmal einen gewissen Teil der Scriptkiddies aus. Auch das Überprüfen von User-Agents ist nochmal ein kleiner Sicherheitszuwachs. Wer es geschafft hat, sich eine kleine HTML Datei mit Formular zu erstellen, wird erstmal nicht so schnell wissen, wie man den User-Agent von Mozilla o. ä. in XYZ umbennent.

Und nun zur Ausgabe:
Mach dir eine standardisierte Ausgabe, die du auch leicht verarbeiten kannst.

Ich beispielsweise mache es so:
[fmmeta]
Status("OK" oder "ERROR")
[Variable=Wert]
[Variable=Wert]
[...]
[/fmmeta]

So schließe ich aus, dass vom Provider eingeschleuste Zwangswerbung mit ausgewertet wird. Ich werte nur die Zeilen zwischen [fmmeta] und [/fmmeta] aus.

mfg olli
vertex.dreamfall.at | GitHub
 

bruce85

BeitragDi, März 20, 2007 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Dir,
aber ich muss erst eine verbindung zu MySQL herstellen um zu prüfen ob dieser Name in der Datenbank existiert mit dem Passwort.
Ich weiss das ich die HTML tags nicht brauche, aber ich habe das über die adressleiste getestet und wollte es farbisch darstellen.

MfG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

Jolinah

BeitragMi, März 21, 2007 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Zitat:
aber ich muss erst eine verbindung zu MySQL herstellen um zu prüfen ob dieser Name in der Datenbank existiert mit dem Passwort.

Das hast du doch oben schon gemacht mit PHP? Jetzt musst du nur noch mit BB die Ausgabe von PHP lesen, ob das Login OK ist oder nicht.

Du sendest (hier mit GET, aber POST wäre schon besser):
Code: [AUSKLAPPEN]
GET /login.php?nick=nickname&password=passwort HTTP/1.1
Host: test.cn.funpic.de


Und kriegst als Antwort z.B.:
Code: [AUSKLAPPEN]
HTTP/1.1 200 OK
Content-Length: 2 (Länge des Inhalts)
Content-Type: text/plain (Typ des Inhalts)

OK (Das ist der Inhalt selber den du bei PHP mit echo ausgegeben hast)

Dann kannst du je nach Inhalt in BB die gewünschte Meldung ausgeben.

wunderkind

BeitragMi, März 21, 2007 0:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Vertex hat Recht! Eingaben, welcher Art auch immer, müssen geprüft werden, bevor sie an die Datenbank weitergegeben werden! Dazu gehört eigentlich auch ein isset() oder wenigstens ein empty() .

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group