PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Einstellungen


andymilbe
13.12.2004, 17:12:52
Ich arbeite an einer Homepage der KjG (Katholische junge Gemeinde)
(klingt jetzt schlimmer als es ist ;-) )

Wir hatten mal wieder eine Fahrt mit Jugendlichen unternommen und nun soll ich alle Bilder ins Internet stellen.

Deshalb habe ich ein PHP-Skript geschrieben, das dafür sorgt, dass beim Klicken auf "Weiter" immer das im Ordner darauffolgende Bild angezeigt wird. Die Bilder sind durchnummeriert (1.jpg;2.jpg...).
Ich habe zu Hause Apache auf Win2000 mit Standard einstellungen.
Ich zeige euch erst ein mal das Skript:

<?PHP
session_start();
?>
<HTML>
<HEAD>
<TITLE>KjG-Herbstfahrt 2004</TITLE><META
<?PHP
//---------Bilder-Auswahl-Codes---------------;
$_SESSION["bild"]++ ;
if($_REQUEST["bild"] == "")
{
$_SESSION["bild"] = $_SESSION["bild"] ;
}
else
{
$_SESSION["bild"] = $_REQUEST["bild"] ;
}
$back = $_SESSION["bild"]-1 ;
//---------Bilder-Auswahl-Codes---------------;
?>
</HEAD>
<BODY
(...)

IMG SRC="
<?PHP echo $_SESSION["bild"] . ".JPG" ?>
ENTER>
<CENTER>
<TABLE WIDTH=60% CELLPADDING=2 CELLSPACING=0 BORDER=0>
<TR>
<TD WIDTH=25% VALIGN=TOP><P>
<A HREF="
<?PHP if($_SESSION["bild"] != 1)
{
echo "test.php?bild=" . $back ;
}
else
{
echo "destroy.php" ;
}
?>
Zur&uuml;ck</B></FONT></A></TD>
(...)

<A HREF="test.php"><!-- $MVD$:face("Comic Sans") --><FONT FACE="Comic Sans MS,Comic Sans,Times New Roman"><B>Weiter</B></FONT></A></TD>
(...)
(Zum Löschen der Session)
<A HREF="destroy.php"><!-- $MVD$:face("Comic Sans") --><FONT FACE="Comic Sans MS,Comic Sans,Times New Roman"><B>Zur&uuml;ck zur Startseite</B></FONT></A></TD>
BODY>
</HTML>



Meiner Meinung ist das Script richtig.
Es funktioniert auch.
Leider zeigt der bei mir zu Hause immer folgende Fehlermeldungen:

Notice: Undefined index: bild in c:apachehtdocstesttest.php on line 10

Notice: Undefined index: bild in c:apachehtdocstesttest.php on line 11

eine für die Session und eine für "$_Request["bild"]"

Sobald man auf "Weiter" klickt ist die Fehlermeldung für die Session weg, bis ich die Session wieder lösche.
Wenn ich nun auch noch einen Wert für "$_Request["bild"]" über den Link angebe, ist auch diese Fehlermeldung weg.

Ich verstehe nicht, was falsch ist und wie ich es weg bekomme.
Aber das lustige ist, wenn ich die Datei testweise auf den richtigen Server(gemietet), auf dem auch Apache ist, lade und sie teste, kommen keine Fehlermeldungen.
Solange ich aber nicht weiß was falsch ist, möchte ich die Dateien nicht ins Internet stellen.
Sonst habe ich in zwei Wochen eine 10 MB große error_log Datei irgendwo auf dem Server rumfliegen.

Also, sagt mir bitte welche Einstellung am Apache Server oder was am Skript falsch ist.

c4
13.12.2004, 17:21:06
Du fängst einfach an zu rechnen:
$_SESSION["bild"]++;
Lokal beschwert er sich, dass die Variable noch keinen Wert hat und vergibt gleichzeitig den Startwert 0. Darum geht es bei den nächsten Seiten und bis zum Löschen der Session.

Warum wird das online nicht angezeigt? Einfach, weil der Hoster nutzerfreundlich ist. In der php.ini steht irgendwo bei irgendwas mit reporting (error_reporting?), welche Fehler gemeldet werden sollen. Bei Dir zu Hause alle, online nur "E_ALL ~ E_NOTICES" (alles, außer Hinweisen)

Gib Deinen Variblen Startwerte und alles wird gut.

andymilbe
13.12.2004, 17:31:21
Aber die Startwerte der Session muss ich in einer Datei angeben, die vorher geöffnet wurde, oder?
Wenn ich die Standardwerte in die gleich Datei schreibe, dann funktionier es ja nicht, da die Datei sich ja selbst aufruft.

Und was soll ich mit "$_Request["bild"]" machen ?

Da kann ich doch keinen Startwert angeben.


Danke übrigens für die schnelle Antwort, das ist ja warnsinn

xabbuh
13.12.2004, 20:27:13
Baue einfach eine Abfrage mit isset() (http://www.php.net/isset) oder empty() (http://www.php.net/empty) vor dem ersten Aufruf der Variablen ein und weise ihnen hier einen "leeren" Wert zu:

<?php
if(!isset($_SESSION['bild']))
$_SESSION['bild'] = 0;
?>

andymilbe
13.12.2004, 20:47:43
Super!!!

klappt jetzt alles

Danke

kann geschlossen werden