AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] $HTTP_SERVER_VARS nicht gefunden

[PHP] $HTTP_SERVER_VARS nicht gefunden

Ein Thema von MrSpock · begonnen am 26. Apr 2008 · letzter Beitrag vom 26. Apr 2008
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#11

Re: [PHP] $HTTP_SERVER_VARS nicht gefunden

  Alt 26. Apr 2008, 17:19
Hallo Mario,

hab ich doch oben geschrieben. Der Array ist leer! (Der Code steht in meinem Post, der über deinem steht.)
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#12

Re: [PHP] $HTTP_SERVER_VARS nicht gefunden

  Alt 26. Apr 2008, 17:21
Stimmt. Sicher, dass er dir nicht nur ein leeres Array wegen den Syntaxfehlern anzeigt?
Code:
echo "<pre>", print_r($_REQUEST),
Komma statt Semikolon. Normal ist $_REQUEST nicht leer, wenn du ein Formular abgeschickt hast.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: [PHP] $HTTP_SERVER_VARS nicht gefunden

  Alt 26. Apr 2008, 17:25
Hallo Albert

Zitat von MrSpock:
und es gibt mir einen leeren Array zurück. Ist ja uch irgendwie klar, weil das Formular ja noch gar nicht erstellt wurde..
Nach dem Absenden des Formulars kannst du in der eintragen.php auf die Servervariablen/-arrays zugreifen - eintragen.php deshalb, weil diese Datei als Ziel im <form>-Tag angegeben ist.

Vor dem Absenden ist, wie du sagst, natürlich noch nichts in den Arrays.

Oder was ist genau das Problem?

Grüße

Edit: Also das muss so aussehen:

Code:
if (isset($_POST['submit']))
{
    // hier stehen dir die gefüllten Arrays zur Verfügung
}
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#14

Re: [PHP] $HTTP_SERVER_VARS nicht gefunden

  Alt 26. Apr 2008, 17:31
Hallo Mario,

das Ergebnis bleibt gleich.

Was ich nicht verstehe ist die Reihenfolge:

Zunächst wird das Script index.php angezeigt. Wenn man dort anklickt, dass man sich eintragen möchte, wird das Script eintragen.php ausgeführt.

Dort kommt jetzt wie in meinem obigen Beitrag gezeigt zunächst die Abfrage of $name und $email usw. leer sind und es werden entsprechende Fehlermeldungen vorbereitet. DANN kommt die Formulardefinition, mit einem Button:

Code:
<form action="eintragen.php" method="post">
...
und weiter unten:

Code:
<tr>
      <td width="190" bgcolor="#227CAC"></td>
      <td bgcolor="#dedede" colspan="2" align="center">
      <input type="reset" name="reset" value="Angaben l&ouml;schen">
      <input type="submit" name="submit" value="Eintragen">
      </td>
   </tr>
Ich verstehe das so, dass erst wenn das Formular dann abgeschickt wird, ruft sich eintragen.php selbst wieder auf und erst jetzt ist der Array $_REQUEST gefüllt. In der bisherigen Version wurde ja direkt auf die Variablen $name, $email usw. zugegriffen, die ja nicht existieren mussten. Das fordert PHP ja nicht.

Oder verstehe ich da etwas falsch?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: [PHP] $HTTP_SERVER_VARS nicht gefunden

  Alt 26. Apr 2008, 17:35
Hi,

schau dir mal meinen (rechtzeitig abgesendeten) Nachtrag an.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#16

Re: [PHP] $HTTP_SERVER_VARS nicht gefunden

  Alt 26. Apr 2008, 17:59
Hallo Matze,

das isset hat mir geholfen. Jetzt bin ich soweit, dass es funktioniert bis zum Eintrag in die Datenbank.

Dort wird ein sql String zusammengebaut:

Code:
$sql = "INSERT INTO gbook VALUES ('','$datum','$zeit','$_REQUEST["name"]','$_REQUEST["email"]','$_REQUEST["www"]','$_REQUEST["eintrag"]','$_REQUEST["ip"]')";
Problem hier ist, dass durch das Ersetzen der Variablen durch den Array Zugriff (also anstatt $name jetzt $_REQUEST["name"]) der String nicht mehr passt, weil beim ersten " in der eckigen Klammer natürlich das Ende des String erkannt wird. Wie mache ich das in PHP? Gilt hier auch wie in Pascal, das ein in Anführungszeichen eingeschlossener Apastroph durch einen doppelten ersetzt werden muss?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Thorben77

Registriert seit: 22. Okt 2004
359 Beiträge
 
#17

Re: [PHP] $HTTP_SERVER_VARS nicht gefunden

  Alt 26. Apr 2008, 19:18
In einem String in doppelten Anführungszeichen kann man entweder so "$array[key]" oder so "{$array['key']}" auf ein Array zugreifen. Wenn key eine Konstante ist, gehts so: "{$array[key]}".

Oder aber du nimmst den Verknüpfungsoperator:
Code:
$str = "bla bla $var" . $_POST['foo'] . "bla bla $bar";
PHP: Strings: Variable parsing
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: [PHP] $HTTP_SERVER_VARS nicht gefunden

  Alt 26. Apr 2008, 19:22
Hi Albert,

du kannst die Zeichen ' und " (je nach dem, in deinem Fall ") einfach escapen, also einen Backslash davor schreiben. Dadurch wird dieses Zeichen nicht als Stringanfang/-Ende erkannt. Ich bin mir auch nicht ganz sicher, ob es gehen würde, da ich es nie so mache. Normalerweise ist das nicht nötig, wenn du die Strings verknüpfst. Was in Delphi das "+" ist, ist in PHP der ".".

Ich würde aber auf alle Fälle alle (!) Array-Werte je in ein mysql_real_escape_string() setzen. Sonst sind MySQL-Injections möglich und das ist alles andere als vorteilhaft.

Grüße

Edit: Zu langsam, aber der Sicherheitshinweis ist wichtig.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: [PHP] $HTTP_SERVER_VARS nicht gefunden

  Alt 26. Apr 2008, 19:33
Zitat von MrSpock:
Dort wird ein sql String zusammengebaut:

Code:
$sql = "INSERT INTO gbook VALUES ('','$datum','$zeit','$_REQUEST["name"]','$_REQUEST["email"]','$_REQUEST["www"]','$_REQUEST["eintrag"]','$_REQUEST["ip"]')";
Grausamer gehts wohl nicht...

Vorschlag:
Code:
function SQLReplace($sql, $params) {
  foreach($params as $name => $value){
    $sql = str_replace(':' . $name, $value, $sql);
  }
  return $sql;
}

$sql =
  "INSERT INTO gbook
   VALUES (:leer, :datum, :zeit, :name, :email, :www, :eintrag, :ip)";

$params['leer']   = "''";
$params['datum']  = "'" . $datum . "'";
$params['zeit']   = "'" . $zeit . "'";
$params['name']   = "'" . $_REQUEST["name"] . "'";
$params['email']  = "'" . $_REQUEST["email"] . "'";
$params['www']    = "'" . $_REQUEST["www"] . "'";
$params['eintrag'] = "'" . $_REQUEST["eintrag"] . "'";
$params['ip']     = "'" . $_REQUEST["ip"] . "'";
$sql = SQLReplace($sql, $params);
Wobei ich da sowieso immer für eine OOP-Lösung wäre, also gleich alles mit Klassen realisieren. Das ist wesentlich übersichtlicher und wartbarer.
Man kann auch mit PHP ordentliche Software produzieren. Stichwort: E_All | E_Strict !

Gruss
Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#20

Re: [PHP] $HTTP_SERVER_VARS nicht gefunden

  Alt 26. Apr 2008, 21:40
Danke Omata für die Aufmunterung

Zitat:
Grausamer gehts wohl nicht...
Habe es jetzt geändert, weil mir Matze gezeigt hat, dass es nicht nur grottenschlecht, sondern auch unsicher war.

Jetzt sollte es besser sein.

Danke Euch allen für die Hilfe. Muss mich unbedingt etwas mehr in PHP einarbeiten.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz