zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden PHP: Dynamischer Bilderwechsel für jede neue Seite

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 11.10.2007, 11:06
Benutzerbild von grischa_sgd
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 17.09.2007
Beiträge: 170
grischa_sgd befindet sich auf einem aufstrebenden Ast
Frage PHP: Dynamischer Bilderwechsel für jede neue Seite

Gestatten? Anfänger, Blutiger Anfänger
Zum Verständnis: Ich verstehe grundlegende PHP-Funktionen, kann etwas gut nachvollziehen, habe aber noch praktisch keine Erfahrung in diesem Bereich und habe in der Vergangenheit meist mit einer Vorlage+Anpassungen dieser gearbeitet.

So weit, so gut...
Ich bin auf der Suche nach einem Script oder einer Funktion, welche mir erlaubt, die Pfade der im CSS definierten Hintergrundbilder dynamisch - d.h. pro Seite - zu ändern. (SuFu brachte mir nicht viel, vielleicht hab ich auch nach den falschen Begriffen gesucht) Die Hintergrundbilder sind Teil einer kleinen Galerie - auf mein Projekt bezogen: rechts neben dem Hauptbild stehen jeweils 3 Vorschauen für das ausgewählte Hotelzimmer, wenn man eine der Vorschauen anklickt, wird das Hauptbild links ausgewechselt. (-> alles nach der Vorlage von CSS PLAY)
Nun hat ein Hotel aber meist mehrere Zimmer - was für mich konkret bedeutet: Ich möchte, dass die Pfade der Bilder "kontextsensitiv" - also angepasst auf die jeweilige Seite - abgeändert werden. Bestenfalls mit PHP im Stil von: index.php?id=seite&bilder=zimmer56
Wer sich das ganze mal anschauen möchte, ist mit dieser Seite bedient =)
Mein Ansatz war bis jetzt folgender:
PHP-Code:
<?
 $id_img1 
'../gfx/pic_001.png';
 
$id_img2 '../gfx/pic_002.png';
 
$id_img3 '../gfx/pic_003.png';
?>
<a class="gallery slidea" href="#"><em><? if(isset($_REQUEST['img1'])) {echo '<img src="'$img1.($_REQUEST['img1']).'" />';}?></em></a>
<a class="gallery slideb" href="#"><em><? if(isset($_REQUEST['img2'])) {echo '<img src="'$img2.($_REQUEST['img2']).'" />';}?></em></a>
<a class="gallery slidec" href="#"><em><? if(isset($_REQUEST['img3'])) {echo '<img src="'$img3.($_REQUEST['img3']).'" />';}?></em></a>
Ich hoffe, ihr werden schlau daraus - wenn etwas unklar sein sollte, poste ich gerne weiteren Code - aber um unnötigen Lesestoff zu vermeiden, gibts nur das Nötigste.

Ich hoffe, mir kann jemand bei dieser Anfänger-Frage weiterhelfen...
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 11.10.2007, 12:37
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.025
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Vorweg etwas unsanft aber notwendig:
VERWENDE NIEMALS PFADE AUS USEREINGABEN!

Sachen die vom Client kommen (POST, GET, COOKIE...) sollten immer geprüft werden und nur das notwendigste enthalten. Du kennst deine Struktur, also reicht dir die ID deiner Wohnung aus.

Ich nehme an du meinst, dass jeweils die passenden Bilder angezeigt werden wenn du auf der von dir angegebenen Seite auf die jeweilige Ferienwohnung klickst?!

Da du schon eine id übergibts, hast du eindeutiges Merkmal mit dem du arbeiten kannst. Je nach Geschmack und Umfang kannst du für jede Wohnung einen eigenen Ordner (mit Namen der id) anlegen, oder nur die id im Dateinamen des Bildes vermerken. Ich mach mal ein Beispiel mit letzterem:

PHP-Code:
<?php

    $allowedIds 
= array(
        
'sunasain',
        
'semnadur'
    
);

    
$id 'default';
    if (!empty(
$_GET['id']) && in_array($_GET['id'], $allowedIds)) {
        
$id $_GET['id'];
    }

?>
<a class="gallery slidea" href="#"><em><img src="../gfx/pic_<?php echo $id?>_001.png" /></em></a>
<a class="gallery slidea" href="#"><em><img src="../gfx/pic_<?php echo $id?>_002.png" /></em></a>
<a class="gallery slidea" href="#"><em><img src="../gfx/pic_<?php echo $id?>_003.png" /></em></a>
Das wäre die sicherste Lösung, wo du allerdings eine Whitelist über die erlaubten IDs führen musst.

Eine andere Möglichkeit wäre die ID mit einem regulären Ausdruck zu überprüfen und dann z.B. in der Datenbank nachzusehen ob diese ID existiert und der Zugriff erlaubt ist.

Geändert von inta (11.10.2007 um 12:39 Uhr)
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 11.10.2007, 14:09
Benutzerbild von grischa_sgd
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 17.09.2007
Beiträge: 170
grischa_sgd befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von inta Beitrag anzeigen
VERWENDE NIEMALS PFADE AUS USEREINGABEN!
Ja, stimmt - da war doch noch die Sache mit der Sicherheit...
Verstecken kann man das Ganze ja nicht?
Zitat:
Zitat von inta Beitrag anzeigen
Ich nehme an du meinst, dass jeweils die passenden Bilder angezeigt werden wenn du auf der von dir angegebenen Seite auf die jeweilige Ferienwohnung klickst?!
Genau so. Wenn ich eine Ferienwohnung auswähle, soll dazu das passende Bild angezeigt werden.
Zitat:
Zitat von inta Beitrag anzeigen
Da du schon eine id übergibst, hast du eindeutiges Merkmal mit dem du arbeiten kannst. Je nach Geschmack und Umfang kannst du für jede Wohnung einen eigenen Ordner (mit Namen der id) anlegen, oder nur die id im Dateinamen des Bildes vermerken. Ich mach mal ein Beispiel mit letzterem:
Wenn ich nun aber deine Anweisung "$id = 'default';" benutze, wird die (nicht vorhandene) Grafik "/gfx/pic_default_001.png" geladen.
Vermutlich habe ich den Code nicht ganz verstanden. Die erlaubten Arrays werden anstelle von default eingesetzt?
Wenn ja, dann hab ich diesen Teil nicht kapiert.
Und wie forme ich den Link zu der gewünschten Seite? Ist es möglich, das mit index.php?id=semnadur-w1&bild-id1 (als Beispiel) zu erreichen?
Zitat:
Zitat von inta Beitrag anzeigen
Das wäre die sicherste Lösung, wo du allerdings eine Whitelist über die erlaubten IDs führen musst.
Ist das Array diese Whitelist? Also dort, wo ich nun alle erlaubten Seiten eingefügt habe?
Zitat:
Zitat von inta Beitrag anzeigen
Eine andere Möglichkeit wäre die ID mit einem regulären Ausdruck zu überprüfen und dann z.B. in der Datenbank nachzusehen ob diese ID existiert und der Zugriff erlaubt ist.
Ich kann von den Projektbedingungen her keine Datenbanken benutzen.

EDIT: So, jetzt hab ich fertig bearbeitet. Doof von mir - sorry

Geändert von grischa_sgd (11.10.2007 um 14:21 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 11.10.2007, 14:23
lässt grüßen
XHTMLforum-Mitglied
 
Registriert seit: 08.10.2007
Ort: Berlin
Beiträge: 189
code_junkie wird schon bald berühmt werden
Standard

Zitat:
Zitat von grischa_sgd Beitrag anzeigen
Wenn ich nun aber deine Anweisung "$id = 'default';" benutze, wird die (nicht vorhandene) Grafik "/gfx/pic_default_001.png" geladen.
Vermutlich habe ich den Code nicht ganz verstanden. Die erlaubten Arrays werden anstelle von default eingesetzt?
Genau richtig. Erst wird $ID ein Default-Wert zugewiesen, dann wird überprüft ob der User einen gültigten Wert eingegeben hat, und dieser ggfls. in $id gespeichert.
Zitat:
Zitat von grischa_sgd Beitrag anzeigen
Und wie forme ich den Link zu der gewünschten Seite? Ist es möglich, das mit index.php?id=semnadur-w1&bild-id1 (als Beispiel) zu erreichen?
Jap, genau. &bild-id=1 ist natürlich nicht nötig.
Mit ?bla=etwas&etwas=anderes in der URL setzt man die _POST Variablen $_GET['bla'] und $_GET['etwas'] auf "etwas" bzw. "anderes".

> Ist das Array diese Whitelist? Also dort, wo ich nun alle erlaubten Seiten eingefügt habe?

Ja

> Von irgendwo her hab ich das dumpfe Gefühl, einen grossen Teil missverstanden zu haben.

Nein, keine Sorge.
Aber ich versuche mal den Code von inta zu erklären.
Code:
    if (!empty($_GET['id']) && in_array($_GET['id'], $allowedIds)) {
    // heisst soviel wie:
    // wenn $_GET'['id'] gesetzt ist, (also id=etwas in der URL enthalten ist)
    // &&  ("und") dieser Wert im Array $allowedIds (was ja unsere Whitelist ist) enthalten ist,
   // dann überschreiben wir den Default-Wert:
        $id = $_GET['id'];
    }

Geändert von code_junkie (11.10.2007 um 14:33 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 11.10.2007, 14:28
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.025
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Zitat:
Zitat von grischa_sgd Beitrag anzeigen
Ja, stimmt - da war doch noch die Sache mit der Sicherheit...
Verstecken kann man das Ganze ja nicht?
Verstecken ist nicht sinnvoll, sonst kann man nicht über eine URL zu der Seite kommen.
Zum Thema URL gibt es hier auch einige Themen, falls du die etwas aufräumen möchtest, aber das nur am Rande.

Zitat:
Zitat von grischa_sgd Beitrag anzeigen
Wenn ich nun aber deine Anweisung " $id = 'default'; " benutze, wird die (nicht vorhandene) Grafik "/gfx/pic_default_001.png" geladen.
Vermutlich habe ich den Code nicht ganz verstanden. Die erlaubten Arrays werden anstelle von default eingesetzt?
Das war nur als Platzhalter gedacht. Der Fall "default" tritt nur ein, wenn keine oder eine falsche ID übergeben wird. Wenn du in diesem Fall die Seite gar nicht erst anzeigst, dann kannst du das getrost ignorieren, da es diesen Fall an der Stelle nicht geben wird.
Wenn keine ID angegeben ist wird die Übersichtsseite angezeigt?
Dann änder das "default" in den Wert um, wie deine Standardbilder heißen, bzw. benenne die Bilder entsprechend.

Zitat:
Zitat von grischa_sgd Beitrag anzeigen
Und wie forme ich den Link zu der gewünschten Seite? Ist es möglich, das mit index.php?id=semnadur-w1&bild-id1 (als Beispiel) zu erreichen?
Entschuldigung, das hab ich gar nicht mit eingebaut. Genau, da brauchst du einen weiteren Parameter für die entsprechende Nummer des Bildes. Bitte prüfe diesen aber auch unbedingt bevor du damit arbeitest.
Ich denke du kannst den Versuch wagen das selbst einzubauen, wenn du nicht weiter kommst sag einfach nochmal bescheid

Zitat:
Zitat von grischa_sgd Beitrag anzeigen
Ist das Array diese Whitelist? Also dort, wo ich nun alle erlaubten Seiten eingefügt habe?
Genau so ist es.

Zitat:
Zitat von grischa_sgd Beitrag anzeigen
Ich kann von den Projektbedingungen her keine Datenbanken benutzen.
Das war nur ein alternativer Vorschlag, falls du nicht mit dem Array arbeiten möchtest.
Mit Zitat antworten
  #6 (permalink)  
Alt 11.10.2007, 15:05
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 23.07.2007
Beiträge: 287
Chrunchy wird schon bald berühmt werden
Standard

Hallo grischa,

verstecken könntest du das ganze mittels einer Session-Variable, allerdings wäre damit dann, wie hier schon genannt, die Möglichkeit eines direktlinks nicht mehr gegeben.

Was ich aber hier noch vermisse ist die Tatsache, dass alle Hinweise auf eine php-Datei abziehen und nicht auf Veränderungen an der CSS-Datei. Ist die Idee vom Tisch? Oder steh ich nur auf dem Schlauch und verstehe die Vorgänge nicht?
__________________
Gruß Chrunchy

"Eine Theorie ist eine Vermutung mit Hochschulbildung" (James Earl Carter)
Mit Zitat antworten
  #7 (permalink)  
Alt 11.10.2007, 16:08
Benutzerbild von grischa_sgd
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 17.09.2007
Beiträge: 170
grischa_sgd befindet sich auf einem aufstrebenden Ast
Standard

Erstmal: Danke vielmals für die schnellen Antworten!
Ich arbeite mich mal durch und versuche, alles zu verstehen.

Zitat:
Was ich aber hier noch vermisse ist die Tatsache, dass alle Hinweise auf eine php-Datei abziehen und nicht auf Veränderungen an der CSS-Datei. Ist die Idee vom Tisch? Oder steh ich nur auf dem Schlauch und verstehe die Vorgänge nicht?
Zurzeit bin ich an den Anpassungen, um eine Beispielseite zu erstellen (eine Vorlage, bei der die Vorschauen funktionieren) - und genau da bin ich stutzig geworden. Wie soll ich die Hintergrundbilder denn ersetzen - also die, die "standartmässig" im CSS als Hintergrund definiert sind? Was sollte da umprogrammiert oder geändert werden?
Mit Zitat antworten
  #8 (permalink)  
Alt 11.10.2007, 16:13
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.025
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

Ich würde sagen, die Bilder gehören nicht in den Hintergrund. Sie gehören zum Inhalt der Seite und sollten mit Hilfe eines img-Tags eingefügt werden. Als Hintergrundbilder machen die keinen Sinn.
Mit Zitat antworten
  #9 (permalink)  
Alt 11.10.2007, 16:16
Benutzerbild von grischa_sgd
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 17.09.2007
Beiträge: 170
grischa_sgd befindet sich auf einem aufstrebenden Ast
Standard

Ok, ich schaue mal, wie ich das umsetzen kann. Danke vorerst mal für alles
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 15.10.2007, 08:37
Benutzerbild von grischa_sgd
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 17.09.2007
Beiträge: 170
grischa_sgd befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von inta Beitrag anzeigen
Ich würde sagen, die Bilder gehören nicht in den Hintergrund. Sie gehören zum Inhalt der Seite und sollten mit Hilfe eines img-Tags eingefügt werden. Als Hintergrundbilder machen die keinen Sinn.
Wie löse ich denn das Problem, dass ich ohne CSS-Hintergrundbilder keine Galerie mehr erstellen kann? Wenn ich die Bilder entfernen und als IMG in den HTML-Code einfügen würde, funktioniert die CSS-Galerie nicht mehr. Wenn du willst, poste ich gerne den Galerie-Code.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Seite aus iFrame raushalten: klappt nicht in FF und Chrome Kangooroo (X)HTML 6 29.04.2010 10:29
Neue Seite fertig :-) CSS-Newbie Site- und Layoutcheck 14 18.05.2006 22:02
100% Valide Links - da sie eine neue Seite mit Parametern... dr_colossos Site- und Layoutcheck 2 31.01.2006 11:54
Neue Seite - Fehler laut W3C Pixel Design (X)HTML 25 14.12.2005 10:23
oper und anker im div Holger (HMR) CSS 25 18.01.2005 13:01


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:57 Uhr.