Variable über Adresse

L

Luxus_Hirsch

Mitglied
Thread Starter
Dabei seit
15.01.2005
Beiträge
75
Reaktionspunkte
0
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]";
    	
			}
			}
		}
 
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.
 
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?
 
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!
 
Wo find ich dei php.ini denn?
 
Habs ausprobiert, funktioniert aber leider nicht!
 
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:
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
 
OK

und wie siehts mit meinem Script aus, funktioniert der wegen PHP 5 nicht??
 
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!
 
Zurück
Oben Unten