Seite 1 von 2

Neue Schreibweise des Codes in neuer PHP Version

Verfasst: 13.05.2003 17:36
von Muldini
Hallo, als ich die neuste PHP Version installiert habe, musste ich voller erstaunen feststellen, dass keines meiner Scripte lief.

Nach ein wenig stöbern in der php.ini fand ich dann heraus, dass ich 'register_globals' auf 'on' setzen musste.

Doch wenige Absätze weiter unten stand dann:
'GET, POST, Cookie' oder '$_GET['irgendwas']'

Hat da wer ein HowTo oder eine kurze Anleitung wie ich damit programmieren kann, auch wenn 'register_globals' auf 'off' ist ?

Mfg
Muldini

Verfasst: 13.05.2003 17:52
von itst

Verfasst: 13.05.2003 18:01
von Muldini
Danke für den Link.
Hatte eher an eine Erklärung der einzelnen Befehle gedacht und nicht den großen Sinn dahinter.
Da wird ja eh gestritten obs nun sicherer ist oder nicht.

Mfg
Muldini

Verfasst: 15.05.2003 15:22
von Muldini
Mit der neuen Schreibweise funzt mein Counter auch nicht mehr :/

Der Fehler liegt in der ersten Zeile, weiss aber nicht wie ich das anders machen soll.

Code: Alles auswählen

function counter($_GET['counter_tabelle'])
	{
		if (!isset($_GET['db_off']))
    {
    	$query = "SELECT * FROM $_GET['counter_tabelle'] WHERE date='-1' LIMIT 1";
    	$result = mysql_query($query, $_GET['db']);
    	$row = mysql_fetch_assoc($result);
    	$_GET['besucher'] = $row['ip'];
    	$t = time() - 24 * 60 * 60;
    	$query = "DELETE FROM $_GET['counter_tabelle'] WHERE date < '$t' AND date > 0";
    	mysql_query($query, $_GET['db']);
    	$query = "SELECT * FROM $_GET['counter_tabelle'] WHERE ip='$_SERVER['SERVER_ADDR']'";
    	$result = mysql_query($query, $_GET['db']);
    	if (mysql_num_rows($result) == 0)
    	{
    		$query = "SELECT * FROM $_GET['counter_tabelle'] WHERE date='-1'";
    		$result = mysql_query($query, $_GET['db']);
    		$row = mysql_fetch_assoc($result);
    		$query = "UPDATE $_GET['counter_tabelle'] SET ip='".(++$_GET['besucher'])."' WHERE date = '-1'";
    		mysql_query($query, $_GET['db']);
    		$query = "INSERT INTO $_GET['counter_tabelle'] (ip, date) VALUES ('$_SERVER['SERVER_ADDR']', '".time()."')";
    		mysql_query($query, $_GET['db']);
    	}
    }
Ich rufe den Counter wie folgt auf.

Code: Alles auswählen

$_GET['counter_tabelle'] = "counter";
counter($_GET['counter_tabelle']);
Die Fehlermeldung lautet dann:

Code: Alles auswählen

Parse error: parse error, unexpected '[', expecting ')' in xxx\inc\functions.inc.php on line 18
Mfg Muldini

Verfasst: 15.05.2003 16:11
von Pyramide
Da hast du was falsch verstanden. Du musst nicht alle $xyz durch $_GET['xyz'] ersetzen, sondern nur an den Stellen, wo $xyz der Wert eines URL-Parameters sein soll.

Verfasst: 15.05.2003 16:44
von Muldini
Nett zu wissen, danke.

Kannst du mir auch noch erklären was die einzelnen Variablentypen machen, vielleicht mit Beispiel ?

Mfg
Muldini

Verfasst: 15.05.2003 17:48
von Pyramide
Variablen an sich "machen" gar nichts, sie sind nur Datenspeicher.

http://de.php.net/manual/de/language.variables.php

Verfasst: 15.05.2003 20:39
von Muldini
Die Rede war ja auch von den Typen ;)
Weiss auch nicht wie man das besser ausdrücken kann, ich meine halt
wie ich mit $_GET $_POST etc. arbeiten soll.

Mfg
Muldini

Verfasst: 15.05.2003 21:11
von Pyramide
itst hat geschrieben:Folgende URL: http://localhost/test.php?var=inhalt

Code: Alles auswählen

echo $var;
So wars früher. Heute (seit PHP 4.2.x) muss es heissen:

Code: Alles auswählen

echo $_GET['var']:
Wenn du das nicht meinst, verstehe ich deine Frage leider nicht.

Verfasst: 16.05.2003 13:26
von Muldini
Doch das meine ich, doch wo ist der unterschied zwischen $_GET und $_POST bzw. $_COOKIE (ich glaub bei cookie kann der inhalt nur aus einem cookie kommen).

Ich weiss halt nicht wann ich post oder get oder eine der Anderen verwenden soll bzw. worin der unterschied besteht.


Also $_GET wenn die variable in der url übergeben wird, und die anderen ?

Mfg
Muldini