fehler in "php4 für dummies"

stadi

Grünschnabel
ich hab mir das buch "php4 für dummies" gekauft und versuche nun verschiedene listings auf meinem pc selbst zu testen. jedoch funtionieren bei mir so einige nicht. liegt das an meinen einstellungen oder sollen das etwa tippfehler im buch sein?. hier eines der bespiele das bei mir nicht funkt:

<HTML>
<HEAD>
<TITLE>Umgebungsvariablen</TITLE>
</HEAD>
<BODY>
<?
echo ("Was ich alles über Sie weiß...<P>");
echo ("Ihr Browser: $HTTP_USER_AGENT<BR>");
echo ("Ihre IP-Adresse: $REMOTE_ADDR<BR>");
echo ("Ihre Port-Nummer: $REMOTE_PORT");
?>
</BODY>
</HTML>

einfaches bsp. das nur IPnummer anzeigen soll usw. in zeile 8,9 und zehn bekomme ich immer fehlermeldungen.
-phpinfo() funkt einwandfrei


gruss stadi
 
Also

Normaler Weise, zumindest schreib ich es so lautet es :

PHP:
echo "Was ich alles über Sie weiß...<P>";
echo "Ihr Browser: $HTTP_USER_AGENT<BR>";
echo "Ihre IP-Adresse: $REMOTE_ADDR<BR>";
echo "Ihre Port-Nummer: $REMOTE_PORT";

es geht aber auch so :rolleyes:
PHP:
echo "Was ich alles über Sie weiß...<P>";
echo "Ihr Browser: ".  $HTTP_USER_AGENT." <BR>";
echo "Ihre IP-Adresse: ". $REMOTE_ADDR ."<BR>";
echo "Ihre Port-Nummer: ".  $REMOTE_PORT;

Also on die "( )" Aber ansonsten ist das Listing richtig :)
Aber ich habe selbst auch ein Buch indem viele Fehler drin stecken, obwohl es von MUT ist. Naja da gibt man eine Menge Geld für Bücher aus und sie taugen manchmal nichts. Shit Happens. :p

Gruß Mirko
 
Sollte man die Informationen nicht besser aus dem superglobalen Server-Array holen? Bsp:
PHP:
echo 'IP: '.$_SERVER['REMOTE_ADDR'];

snuu
 
Re: Also

Original geschrieben von Mirko D

Also on die "( )" Aber ansonsten ist das Listing richtig :)

Mit Klammern ist es eher korrekt. PHP bietet hier einfach eine Sprachliche Inkonsistenz
und lässt einem bei echo die Wahl ob Klammern benutzt werden oder nicht. Dies
ist aber ziemlich falsch, und mann täte bei den PHP Entwicklern gut daran dies abzustellen.

Denn das ist ziemlich inkonsistent.

echo ist eine Funktion wie alle anderen auch, demnach sollte sie sich auch so verhalten.
Im Buch wird das demnach richtig aufgezeigt.
 
Danke für die Belehrung in meinen Büchern wurde es nie so aufgeführt. Dennoch funktionieren alle Scripte einwandfrei, welche mit einem echo() ohne die " () " versehen sind.

Und dank Tutorials.de klappt noch einiges mehr. :) :)

Gruß Mirko
 
Original geschrieben von Mirko D
Danke für die Belehrung in meinen Büchern wurde es nie so aufgeführt. Dennoch funktionieren alle Scripte einwandfrei, welche mit einem echo() ohne die " () " versehen sind.

Funktionieren != Richtig. Zumindest bei PHP. PHP hat das problem das es oftmals falsche
Dinge unterstützt, die einem kein wirklich guten Codestil beibringen.

Spätestens wenn einer der mit PHP "programmieren" gelernt hat auf richtige Sprachen umsteigt
bekommt er oft die ganze härte des falsch antrainierten zu spüren.
 
echo ist keine Funktion, sondern ein Sprachkonstrukt, siehe PHP Doku:
http://de2.php.net/echo und das hier: http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
Dort steht schoen erklaert, dass man echo ohne "()" verwendet (obwohl es auch mit geht). Will man die Eigenschaften einer Funktion (wie Rueckgabewerte), sollte man [phpf]print[/phpf] verwenden, was "eher" eine Funktion ist.

Demnach koennte man durchaus sagen, dass das Buch falsch ist.
Ich glaube aber eher das Problem dieses Buches ist, dass es einfach zu alt ist. Es setzt ja register_globals auf On voraus, was aber seit PHP 4.2 (standartmaeszig) auf Off steht. Das gezeigte HTML ist auch altbacken. Wenn man schon zu Buechern greift (Angesichts der Onlinetuts zu PHP eigentlich unnoetig) wuerde ich O'Reilly empfehlen, die machen meiner Ansicht nach ihre Arbeit am besten.

Ansonsten ist es voellig richtig, dass PHP inkonsistent und verquirkst ist und sich definitiv nicht als Sprache eignet, um Programmieren zu lernen!
 
Original geschrieben von Zatic
echo ist keine Funktion, sondern ein Sprachkonstrukt, siehe PHP Doku:
http://de2.php.net/echo und das hier: http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
Dort steht schoen erklaert, dass man echo ohne "()" verwendet (obwohl es auch mit geht). Will man die Eigenschaften einer Funktion (wie Rueckgabewerte), sollte man [phpf]print[/phpf] verwenden, was "eher" eine Funktion ist.

Ein "Sprachkonstrukt" wie in der doku "language construct" ist nicht wirklich eine Eigenart
einer Sprache. Mann hat das ganze "Sprachkonstrukt" genannt, weil an solchen Dingen
sonst die inkonsistenz viel zu offensichtlich ist. Sprich es ist eine nette Ausrede.

Wenn mann nach PHP + language construct sucht, findet mann nur ein haufen "funktionen"
die eben diesen Satz enthalten.
So z.b das Array:
Code:
$fruits = array (
 __ "fruits"_ => array("a" => "orange", "b" => "banana", "c" => "apple"),
 __ "numbers" => array(1, 2, 3, 4, 5, 6),
 __ "holes"_ => array("first", 5 => "second", "third")
 )

Da PHP keine OOP sinnvoll unterstützt kann auch ein Array in PHP nicht wirklich
sauber leicht instanziert werden.
Weshalb mann hier sich die geschichte einfach macht und etwas erlaubt, was so
aufgrund fehlender Spracheigenschafften nicht möglich wäre.
Eine saubere OOP Sprache kann dieses mit Object Orientierten Eigenschaften umsetzen und
als Methode (funktion) bereitstellen.
Dadurch das es bei PHP nicht möglich ist wird sowas einfach "Sprachkonstrukt" genannt.
Der Ausdruck ist aber in einer funktionalen Programmiersprache einfach falsch.

Original geschrieben von Zatic

Demnach koennte man durchaus sagen, dass das Buch falsch ist.
Ich glaube aber eher das Problem dieses Buches ist, dass es einfach zu alt ist. Es setzt ja register_globals auf On voraus, was aber seit PHP 4.2 (standartmaeszig) auf Off steht. Das gezeigte HTML ist auch altbacken. Wenn man schon zu Buechern greift (Angesichts der Onlinetuts zu PHP eigentlich unnoetig) wuerde ich O'Reilly empfehlen, die machen meiner Ansicht nach ihre Arbeit am besten.

Ansonsten ist es voellig richtig, dass PHP inkonsistent und verquirkst ist und sich definitiv nicht als Sprache eignet, um Programmieren zu lernen!
Nein, ein Sprachkonstrukt hat in einer sauberen Programmiersprache nichts zu suchen, und
ein Buchautor sollte eine falsche Spracheigenschafft nicht unterstützen.
Das HTML wie es darsteht hat für mich keine Aussagekraft, da es nicht darum geht.
Mit dem Register Globals hast du sicher recht, kann aber sicherlich, wie du auch angemerkt hast, davon kommen das es vor der Umstellung erschien.
Dennoch ist es die pflicht eines guten Buches sich zu informieren was sich in Zukunf ändern wird, und sein Buch so schreiben das es so lange wie möglich gültig ist.
Beim letzten Punkt gebe ich dir auch recht. OReilly ist auch mein ausgesprochener Lieblingsverlag, wobei ich eigentlich mehr Java und UNIX Bücher von OReilly kenne. Dennoch denke ich mir das mann die Qualität der Bücher auch in den PHP Büchern wiederfindet.
 
Original geschrieben von Zatic
echo ist keine Funktion, sondern ein Sprachkonstrukt, siehe PHP Doku:
http://de2.php.net/echo und das hier: http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
Dort steht schoen erklaert, dass man echo ohne "()" verwendet (obwohl es auch mit geht). Will man die Eigenschaften einer Funktion (wie Rueckgabewerte), sollte man [phpf]print[/phpf] verwenden, was "eher" eine Funktion ist.

Demnach koennte man durchaus sagen, dass das Buch falsch ist.
Ich glaube aber eher das Problem dieses Buches ist, dass es einfach zu alt ist. Es setzt ja register_globals auf On voraus, was aber seit PHP 4.2 (standartmaeszig) auf Off steht. Das gezeigte HTML ist auch altbacken. Wenn man schon zu Buechern greift (Angesichts der Onlinetuts zu PHP eigentlich unnoetig) wuerde ich O'Reilly empfehlen, die machen meiner Ansicht nach ihre Arbeit am besten.

Ansonsten ist es voellig richtig, dass PHP inkonsistent und verquirkst ist und sich definitiv nicht als Sprache eignet, um Programmieren zu lernen!


DANKE ! Ich habe register_globals auf on gestellt- jetzt funkts
nochmal danke für die vielen vielen Antworten !
 
Zurück