Variable über Adresse

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Luxus_Hirsch, 13.02.2005.

  1. Luxus_Hirsch

    Luxus_Hirsch Thread Starter MacUser Mitglied

    Beiträge:
    70
    Zustimmungen:
    0
    MacUser seit:
    15.01.2005
    Hi,
    ich wollte einer Variable einen Wert über die Adresse zuweisen, aber leider funktioniert das nicht.
    Weiss nicht was ich falsch mache.

    Über die Adressleiste gebe ich
    Code:
    index.php?show=news
    ein.
    In der der index.php datei wir dann folgender Code ausgeführt:
    PHP:
            switch($show)
            {
            case 
    "news":
                {
                
    $ergebnis mysql_query"SELECT * FROM `news` ORDER BY `id` DESC LIMIT 0, 7 " );
                
    $anzahl mysql_num_rows$ergebnis );
                while ( 
    $datensatz mysql_fetch_row$ergebnis ) )
                {
                print
    "$datensatz[4]";
            
                }
                }
            }
     
  2. Nogger

    Nogger MacUser Mitglied

    Beiträge:
    367
    Zustimmungen:
    0
    MacUser seit:
    03.08.2004
    Werte aus der HTTP Anfrage werden seit längerem aus Sicherheitsgründen nicht mehr automatisch zu globalen Variablen gewandelt.

    Setze davor ein:

    PHP:
      $show = isset($_GET["show"])  ? (string)$_GET["show"] : "";
    Noch ein Hinweis: Du solltest die Felder des Ergebnisses der Datenbankabfrage über der Spaltennamen ansprechen, und nicht über den numerischen Index. Das ist robuster gegenüber Änderungen des Datenbankschemas.
     
  3. Luxus_Hirsch

    Luxus_Hirsch Thread Starter MacUser Mitglied

    Beiträge:
    70
    Zustimmungen:
    0
    MacUser seit:
    15.01.2005
    OK danke.

    Noch eine Frage:
    Wenn ich einen Fehler im PHP Code hatte, wurde mir auf dem PC immer angezeigt in welcher Zeile der Fehler war. Auf dem Mac bleibt die Seite nur weiss. Was muss ich einstellen damit ich auch auf dem Mac den Fehler angezeigt bekomme?
     
  4. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.039
    Zustimmungen:
    1.316
    MacUser seit:
    13.09.2004
    Das wird hier erklärt :

    http://de3.php.net/error_reporting

    Das dürfte Deine Lösung sein:

    PHP:
    // Alle PHP-Fehler melden (in PHP 3 kann die Bitmaske 
    // 63 verwendet werden)
    error_reporting(E_ALL);
    Der Standardwert wird in der php.ini definiert und kann von Dir dort verändert werden!
     
  5. Luxus_Hirsch

    Luxus_Hirsch Thread Starter MacUser Mitglied

    Beiträge:
    70
    Zustimmungen:
    0
    MacUser seit:
    15.01.2005
    Wo find ich dei php.ini denn?
     
  6. Luxus_Hirsch

    Luxus_Hirsch Thread Starter MacUser Mitglied

    Beiträge:
    70
    Zustimmungen:
    0
    MacUser seit:
    15.01.2005
    Habs ausprobiert, funktioniert aber leider nicht!
     
  7. Luxus_Hirsch

    Luxus_Hirsch Thread Starter MacUser Mitglied

    Beiträge:
    70
    Zustimmungen:
    0
    MacUser seit:
    15.01.2005
    OK
    habs nun raus.

    Noch ne frage.
    Hab hier einen script der soll was in eine MySQL Datenbank eintragen über ein Formular.
    Leider funktioniert es nicht.
    Liegt das an PHP5?
    PHP:
    <?

    if ( isset( 
    $username ) && isset( $datum ) && isset( $uberschrift ) && isset( $newstext ) )
        {
        
    // Überprüfe Benutzereingaben
        
    $dberror "";
        
    $ret in_db_einfuegen$username$datum$uberschrift$newstext$dberror );
        if ( ! 
    $ret )
            print 
    "Fehler: $dberror<BR>";
        else
            print 
    "News gespeichert.";
        }
    else    {
        
    ausgabe_formular();
        }

    function 
    in_db_einfuegen$username$datum$uberschrift$newstext, &$dberror )
        {
        include
    "../config.php";
        
    $link =  mysql_pconnect$dbhost$dbuser$dbpasswd );

        if ( ! 
    $link )
            {
            
    $dberror "Keine Verbindung zu MySQL server";
            return 
    false;
            }
        if ( ! 
    mysql_select_db$dbname$link ) )
            {
            
    $dberror mysql_error();
            return 
    false;
            }
        
    $anfrage "INSERT INTO news ( username, datum, uberschrift, newstext ) 
        values( '
    $username', '$datum', '$uberschrift', '$newstext' )";
        if ( ! 
    mysql_query$anfrage$link ) )
            {
            
    $dberror mysql_error();
            return 
    false;
            }
        return 
    true;
        }

    function 
    ausgabe_formular()
        {
        global 
    $PHP_SELF;
        print 
    "<form action=\"$PHP_SELF\" method=\"POST\">\n";
        print 
    "Username:";
        print 
    "<input TYPE=\"text\" name=\"username\"><p>\n";
        print 
    "Datum:";
        print 
    "<input TYPE=\"text\" name=\"datum\"><p>\n";
        print 
    "Uberschrift:";
        print 
    "<input TYPE=\"text\" name=\"uberschrift\"><p>\n";
        print 
    "Newstext:";
        print 
    "<input TYPE=\"text\" name=\"newstext\"><p>\n";
        print 
    "<input type=\"submit\" value=\"submit!\">\n</form>\n";
        }
    ?>
     
    Zuletzt bearbeitet: 14.02.2005
  8. farbenmann

    farbenmann MacUser Mitglied

    Beiträge:
    341
    Zustimmungen:
    7
    MacUser seit:
    29.01.2005
    DU kannst die Variablen auch so wie im ersten Beispiel weitergeben idem in deiner PHP.INI der Punkt Register Globals = on eingestellt wird . ist aber aus Sicherheitsgründen standardmäßig ausgeschalten .

    Gruss der Farbenmann
     
  9. Luxus_Hirsch

    Luxus_Hirsch Thread Starter MacUser Mitglied

    Beiträge:
    70
    Zustimmungen:
    0
    MacUser seit:
    15.01.2005
    OK

    und wie siehts mit meinem Script aus, funktioniert der wegen PHP 5 nicht??
     
  10. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.039
    Zustimmungen:
    1.316
    MacUser seit:
    13.09.2004
    PHP 4 und 5 sind weitgehend kompatibel ( zumindest abwärts). Die Chancen um Hinweise auf Skriptfehler zu bekommen erhöhen sich durch folgende Maßnahmen:

    (1) "funktioniert nicht" ist keine Fehlerbeschreibung! Genauer:

    Was geht nicht.
    An welcher Stelle machst Du das fest.
    Was hast Du probiert.
    Hast Du eine vermutung.

    (2) Wirf kein ganzes Skript mit dem Hinweis "geht nicht" hier herein. Versuch den Fehler einzugrenzen und bring dann hier ein kurzes Skript mit genauer Beschreibung des Fehlers.

    Die php.ini findest Du, indem Du in Deinem Documents-Verzeichnis folgende Datei erzeugst und im Browser betrachtest:

    PHP:
    <?
      
    phpinfo();
    ?>
    Da wird Dir der Pfad angezeigt. Gibt es dort keine php.ini, so werden Standardwerte angenommen. Du kannst eine php.ini.default dorthin kopieren und die Werte anpassen.


    Zu Deinem Skript:

    Ist register_globals==on ? Bekommst Du auch mit obigem Skript heraus! Wenn nicht, dann sind dies POST-Variablen so nicht sichtbar. ACHTUNG:
    register_gloabls nur in Intranets auf ON setzen, NICHT im WEB!
     
Die Seite wird geladen...

Diese Seite empfehlen