![]() |
Re: [PHP] $HTTP_SERVER_VARS nicht gefunden
Hallo Mario,
hab ich doch oben geschrieben. Der Array ist leer! (Der Code steht in meinem Post, der über deinem steht.) |
Re: [PHP] $HTTP_SERVER_VARS nicht gefunden
Stimmt. Sicher, dass er dir nicht nur ein leeres Array wegen den Syntaxfehlern anzeigt? ;)
Code:
Komma statt Semikolon. Normal ist $_REQUEST nicht leer, wenn du ein Formular abgeschickt hast.
echo "<pre>", print_r($_REQUEST),
|
Re: [PHP] $HTTP_SERVER_VARS nicht gefunden
Hallo Albert
Zitat:
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 } |
Re: [PHP] $HTTP_SERVER_VARS nicht gefunden
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:
und weiter unten:
<form action="eintragen.php" method="post">
...
Code:
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.
<tr>
<td width="190" bgcolor="#227CAC"></td> <td bgcolor="#dedede" colspan="2" align="center"> <input type="reset" name="reset" value="Angaben löschen"> <input type="submit" name="submit" value="Eintragen"> </td> </tr> Oder verstehe ich da etwas falsch? :stupid: |
Re: [PHP] $HTTP_SERVER_VARS nicht gefunden
Hi,
schau dir mal meinen (rechtzeitig abgesendeten) Nachtrag an. ;) Grüße |
Re: [PHP] $HTTP_SERVER_VARS nicht gefunden
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:
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?
$sql = "INSERT INTO gbook VALUES ('','$datum','$zeit','$_REQUEST["name"]','$_REQUEST["email"]','$_REQUEST["www"]','$_REQUEST["eintrag"]','$_REQUEST["ip"]')";
|
Re: [PHP] $HTTP_SERVER_VARS nicht gefunden
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";
![]() |
Re: [PHP] $HTTP_SERVER_VARS nicht gefunden
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 ![]() Grüße Edit: Zu langsam, aber der Sicherheitshinweis ist wichtig. |
Re: [PHP] $HTTP_SERVER_VARS nicht gefunden
Zitat:
Vorschlag:
Code:
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.
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); Man kann auch mit PHP ordentliche Software produzieren. Stichwort: E_All | E_Strict ! Gruss Thorsten |
Re: [PHP] $HTTP_SERVER_VARS nicht gefunden
Danke Omata für die Aufmunterung :mrgreen:
Zitat:
Jetzt sollte es besser sein. Danke Euch allen für die Hilfe. Muss mich unbedingt etwas mehr in PHP einarbeiten. :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz