Erfolgsmeldung:
Hi Delmar,
jeeaaah! Ich habe auf meinem Serve die Fehlermeldungen eingestellt und sehe diese jetzt genau wie auf dem Server meines Providers. Dann habe ich die Schreibfehler im Script behoben, das Leerbuch hatte tatsächlich Fehler und zwar haben die ein Bodyendtag geschrieben aber kein Bodyanfangtag, dann noch ganz unten falsch <input type="reset" /> statt richtig <input type="reset">, das habe ich selbst herausgefunden. Jetzt funktioniert dieses Script wie unten. Dann war noch das: - register_globals = war Off, und im Script war genau dieses $foo ja drin, also habe ich das auf "On" gestellt in der php.ini stand diese Info:
; - register_globals = Off [Security, Performance]
; Global variables are no longer registered for input data (POST, GET, cookies,
; environment and other server variables). Instead of using $foo, you must use
; you can use $_REQUEST["foo"] (includes any variable that arrives through the
; request, namely, POST, GET and cookie variables), or use one of the specific
; $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
; on where the input originates. Also, you can look at the
; import_request_variables() function.
<?
if($vote && !$already_voted)
SetCookie('already_voted',1);
?>
<html><head><title>Name des Babies</title>
</head><body><h3>Name des Babies</h3>
<form action="babynew.php" method="POST">
<p>Vorschlag:
<input type="text" name="new_name"></p>
<input type="submit"
value="Vorschlag und/oder Stimme abschicken">
<?
mysql_pconnect("localhost", "username", "password");
$db = "datenbankname";
$table = "baby_names";
if($new_name) {
if(!mysql_db_query($db, "insert into $table
values ('$new_name',0)")) {
echo mysql_errno().':'.
mysql_error()."<br />\n";
}
}
if($vote && $already_voted) {
echo '<p><b>Erwischt, aber es geht kein zweitesmal! ';
echo "Ich ignoriere die Stimme.</b></p>\n";
}
else if($vote) {
if(!mysql_db_query($db,
"update $table set votes=votes+1
where name='$vote'")) {
echo mysql_errno().':'.
mysql_error()."<br />\n";
}
}
$result=mysql_db_query($db,
"select sum(votes) as sum from $table");
if($result) {
$sum = (int) mysql_result($result,0,"sum");
mysql_free_result($result);
}
$result=mysql_db_query($db,
"select * from $table order by votes DESC");
echo <<<EOD
<table border="0"><tr><th>Vote</th>
<th>Idea</th><th colspan="2">Votes</th>
</tr>
EOD;
while($row=mysql_fetch_row($result)) {
echo <<<FOO
<tr><td align="center">
<input type="radio"
name="vote" value="$row[0]"></td>
<td>$row[0]</td>
<td align="right">$row[1]</td>
<td>
FOO;
if($sum && (int)$row[1]) {
$per = (int)(100 * $row[1]/$sum);
echo '<img src="bline.gif" height=12 ';
echo "width=$per> $per %</td>";
}
echo "</tr>\n";
}
echo "</tables>\n";
mysql_free_result($result);
?>
<input type="submit"
value="Vorschlag und/oder Stimme abschicken">
<input type="reset">
</form>
</body>
</html>
Die php.ini Datei habe ich wie folgt geändert: Finder > Gehe zu > /usr/local/php/lib/php.ini > dann die php.ini editieren > dann diese Datei abspeichern in das Verzeichnis /usr/local/php/lib/ abspeichern, das macht er aber nicht, weil das alles geschützte Verzeichnisse sind, deshalb alle diese Verzeichnisse mit Apfel I und dann Eigentümer & Zugriffsrechte auf Schreiben und Lesen stellen, Schloss wegklicken und auf (ich) stellen, dann Datei reinspeichern, ersetzen und alle Eigentümer & Zugriffsrechte wieder auf System geschützt zurückstellen.
Danke für deine Hilfe,
So long ...
mactrisha.
Das einzige, was mir jetzt noch komisch vorkommt ist, dass ich meinen php-Dateien auf meinem localhost Rechte setzen muss (ausführbar, schreiben und lesen), das muss ich auf dem Providerserver nicht.