Keine Formulardaten mehr

Diskutiere mit über: Keine Formulardaten mehr im Web-Programmierung Forum

  1. Belmondo45

    Belmondo45 Thread Starter MacUser Mitglied

    Beiträge:
    5
    Zustimmungen:
    0
    Registriert seit:
    16.02.2005
    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
     
  2. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.029
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    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
     
  3. lindic

    lindic MacUser Mitglied

    Beiträge:
    197
    Zustimmungen:
    5
    Registriert seit:
    20.11.2004
    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
     
  4. Belmondo45

    Belmondo45 Thread Starter MacUser Mitglied

    Beiträge:
    5
    Zustimmungen:
    0
    Registriert seit:
    16.02.2005
    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
     
  5. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.029
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    @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.
     
  6. Belmondo45

    Belmondo45 Thread Starter MacUser Mitglied

    Beiträge:
    5
    Zustimmungen:
    0
    Registriert seit:
    16.02.2005
    ...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
     
  7. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.029
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    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 !?
     
  8. lindic

    lindic MacUser Mitglied

    Beiträge:
    197
    Zustimmungen:
    5
    Registriert seit:
    20.11.2004
    Das geht mit $_FILES, eine genaue Beschreibung gibt es z.B. hier.

    Viel Erfolg. :)
     
  9. Belmondo45

    Belmondo45 Thread Starter MacUser Mitglied

    Beiträge:
    5
    Zustimmungen:
    0
    Registriert seit:
    16.02.2005
    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
     
  10. lindic

    lindic MacUser Mitglied

    Beiträge:
    197
    Zustimmungen:
    5
    Registriert seit:
    20.11.2004
    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...

    }
     

Diese Seite empfehlen

Benutzerdefinierte Suche