Keine Formulardaten mehr

B

Belmondo45

Neues Mitglied
Thread Starter
Dabei seit
16.02.2005
Beiträge
5
Reaktionspunkte
0
Hallo Ihr Lieben!

Ein Mac-Neuling hat ein Forum gefunden - und freut sich!

Und schon geht's los: Ich habe vor kurzem eine längere Arbeit mittels HTML/PHP u. MYSQL fertiggestellt. Lief auch alles hervorragend - leider auf einem PC. Da seit einigen Tagen der iMac angekommen ist, sollte das nun irgendwie auch auf dem laufen. (Wäre jedenfalls wünschenswert)

Also habe ich die Scripte und die Datenbank zu MAMP auf den Mac gepackt - mit einem kleinen Schönheitsfehler:

Die Skripte scheinen keine datenbankbasierten Formulardaten mehr aneinander zu übergeben! Die werden in den Auswahlmenüs jedoch nach wie vor angezeigt.

Alle Querys sind scheinbar leer. Ein Standardfehler??

Die Datenbank läuft sauber in phpMyAdmin und die Skripte werden via Safari und auch Internetexplorer einwandfrei angezeigt. Bloß die Datenübergabe findet kollektiv auf ALLEN Seiten nicht mehr statt. Der HTML-Code scheint in Ordnung zu sein. Ich starre momentan nur noch planlos auf die Skripte. Wenn also jemand eine Ahnung hat woran das liegen könnte - ich bin für jeden Hinweis dankbar!

Merci Beaucoup im voraus!

Bel
 
Hallo Belmondo,

willkommen hier im Forum. Ich hoffe ich kann Dir helfen:

Wenn Du noch nicht mit den arrays $_POST[] und $_GET arbeitest, solltest Du in der php.ini die Kompatibilität zu php3 herstellen:

register_globals = on // Achtung ist deprecated, da Sicherheitsproblem

Wenn Du ältere PHP4-Scripte verwendest, hast Du ggf. statt

$_POST noch $HTTP_POST_VARS[] als array. In diesem Falle mußt Du

register_long_arrays=on

setzen, sonst sind die alten langen Array-namen mit leeren Werten belegt ( könnte der Effekt sein!)

Gruß Karsten
 
Hallo und willkommen hier im Forum! :)

Ich vermute, es liegt an der Einstellung der register_globals, d.h bei deinem PC waren sie ON und jetzt auf dem Mac sind sie OFF (was auch gut ist!).

Entweder du stellst die Einstellung in der php.ini um (nicht zu empfehlen) oder du passt deine Scripte an. Du musst dann die Variablen, die per Formular (post) übergeben werden, beispielhaft so empfangen: $_POST['variable']. Bei GET-Formularen wäre es dann $_GET['variable'].

Dann gibt es noch einige andere globale Variablen - oder auch superglobals genannt - suche einfach mal ein bisschen hier oder bei google.

Grüße, lindic
 
Das war es!

Vielen vielen Dank, das war es tatsächlich!

Jetzt bleibt nur noch die Frage, ob ich es mir ersparen kann die Variablen einzeln mit $_POST[VAR] zu übernehmen. (Sind z.T. über 70 pro Formular im Einsatz)
Gibt es eine Möglichkeit, alle Variablen gleichzeitig zu übernehmen, so dass sie im nächsten Skript weiter verwendbar sind? Ihr merkt schon, ich bin ziemlich grün auf diesem Gebiet, seht es mir bitte nach.

Wenn ihr da noch was wüsstet, wäre ich auf der Zielgeraden!

Vielen Dank nochmal,

Bel
 
@Belmondo:

Du kannst die Skripte unverändert übernehmen, wenn Du

register_globals= on

in der php.ini setzt! Es spricht nichts dagegen dies zu tun, wenn Dein Webserver in einem Intranet läuft! Der Grund warum es das nicht mehr gibt (per default), liegt allein in Sicherheitsproblemen bei registered globals. Kannst Du allen im Netz trauen, dann kannst Du auch register globals aktivieren. Nur solltest Du langsam alles umstellen! Ich selbst habe noch ca. 70-80 alte Skripte im Einsatz, in einem Intranet kein Problem. Die Variablen die Du per post überträgst kannst Du ja in arrays oder Objekte packen. Dann sind es nicht gar so viele und mit

foreach($_POST as $key => $value)
{
.
.
.
}

kannst Du sie leicht auspacken.
 
...verdmmmmmmmmt...

@wegus:
Das mit den register_globals lasse ich mir durch den Kopf gehen. Die Nutzungsumgebung wird voraussichtlich erstmal sicher sein - die Frage ist nur wie lange das Kunstwerk noch dort bleibt. Na, mal sehen.

@all:
Natürlich taucht sofort das nächste Problem auf - ich bin ab verdampfen!! Ab sofort funktioniert trotz der Korrekturen die Grafik übergabe eines Upload-Skriptes an PHP nicht mehr. Das ganze sieht in gekürzter Form so aus und funktionierte bis vor kurzem noch.

<form action = "datensatz.php" method = "post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILES_SIZE" value="100000">
<input type="file" name="Grafik" size="25" maxlength="100000">
<input type="submit" value="speichern">
<input type="reset">
</form>


Nun die Frage: Kann die Grafik nicht mit $_POST[Grafik] usw. geholt werden?? Und wenn nicht, wie dann??

In der Hoffnung den Kram bald hinter mir zu lassen,
Bel
 
Wenn dann $_POST['Grafik'] !
Soll das ein upload werden oder meinst Du hier den Dateinamen einer Grafik-Datei? Bei der Größe tippe ich eher auf einen upload !?
 
Belmondo45 schrieb:
Nun die Frage: Kann die Grafik nicht mit $_POST[Grafik] usw. geholt werden?? Und wenn nicht, wie dann??
Das geht mit $_FILES, eine genaue Beschreibung gibt es z.B. hier.

Viel Erfolg. :)
 
Hoppla

Entschuldigt,

das war tatsächlich etwas unkomplett. Das Gegenstück in PHP ist zunächst folgendes:

if ($Grafik!="")
{
$datei=fopen($_FILES[Grafik][tmp_name],rb);
$data=addslashes(fread($datei, $_FILES[Grafik][size]));
$insertgrafikfrei=(" INSERT INTO `grafik` (`Dateityp`, `Grafik`)
VALUES ('image/jpeg', '$data');");

}
else
{
$fehler.= "<br>Bitte eine Grafik ausw&auml;hlen!";
}

Es handelt sich um ein paar kleine Grafiken, die bei Bedarf über das Upload-Skript direkt als BINARY in die Datenbank wandern sollen. (Ich weiß, das ist nicht anzuraten - soll an der Stelle aber tatsächlich so sein.) Der Fehler taucht hier bei ELSE auf - $Grafik scheint also leer zu sein. (trotz der $_POST['Grafik'] inkl. "Tüddels")

Ich hoffe jetzt wißt ihr worauf ich hinaus wollte.

Gruß Bel
 
Du kannst die Datei, bzw. deren Existenz nur mit $_FILES abfragen!

Also so z.B.:

if (($_FILES['Grafik']['name'] <> '') && ($_FILES['Grafik']['name'] <> 'none')) {

// mach es...

} else {

// mach es nicht...

}
 
Merci beaucoup

Jawoll!!

Vielen vielen Dank für Eure Hilfe, jetzt scheint es zu funktionieren. Die ersten Tests haben keine Fehler mehr auftauchen lassen. Ich werde Euch jederzeit weiterempfehlen und hoffe trotzdem, daß ich nicht so schnell wieder Probleme posten muß. (toi, toi, toi)

Also habt es gut, bis bald

Bel
 
Zurück
Oben Unten