Seitenchaos vermeiden wie? mit PHP?

Diskutiere mit über: Seitenchaos vermeiden wie? mit PHP? im Web-Programmierung Forum

  1. cym

    cym Thread Starter MacUser Mitglied

    Beiträge:
    1.352
    Zustimmungen:
    9
    Registriert seit:
    03.05.2004
    Guten Abend Forum!

    Ich surfte vor ein paar Tagen auf dieser Webseite und entdeckte in der Adresszeile des Browser eine ziemlich lange Adresse, während man sich durch die verschiedenen Beispielgalerien klickte. Wie programmierten dies die Programmierer, dass sich jeweils nur das Bild auf der Seite ändert, wenn man z.B. "Bild 1", "Bild 2", etc. wählt? Bisher erstellte ich für jedes Bild in meiner Bildergalerie eine separate Seite.
    Kann man das mit PHP nun ganz einfach lösen?

    Gruss,
    cym :)
     
  2. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.036
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    Ein klares JEIN ;)
    Einfach ist es sicher nicht. PHP ist dafür gedacht Webseiten dynamisch zu erstellen, also on the fly für den Benutzer aus Daten HTML-Seiten zu generieren. Per Programm eben. Das was Du da siehst ist eine Variable, die zusammen mit der Webseite übergeben wird. Je nach Wert von id wird die Seite anders dargestellt.
    Sogesehen ist es in der Tat so einfach.
    Deine Frage deutet aber evtl. an, daß Du wenig Ahnung vom programmieren hast!?
    Wenn dem so ist, dann müßtest Du Dich da einarbeiten um das ganze dann einfach zu lösen. Daher mein JEIN. Wenn Du eine Motivation zum lernen gesucht hast, dann hast Du die mit obiger Erkenntnis gefunden.
     
  3. Hilarious

    Hilarious MacUser Mitglied

    Beiträge:
    2.195
    Zustimmungen:
    5
    Registriert seit:
    25.11.2004
    Die einfachste Lösung auf die Frage, die sich in Deiner Beschreibung verbirgt wäre die systematische Verwendung von Parametern in der Adresszeile.

    Ein einfaches Beispiel, wobei das keine Anleitung werden soll:

    Du hast eine Website mit 5 Seiten, die jeweils immer den gleichen Navigationsheader haben. Jetzt könntest Du an ein Frameset denken, aber das könntest Du auch gleich wieder verwerfen ;) Was Du also nun brauchst, sind die fünf unterschiedlichen Inhalte, der Navigationsheader sowie eine Datei, die diese fünf je nach Zusammenhang zusammenbringt.

    Also legst Du Dir eine Struktur zurecht, und vereinbarst mit Dir selbst, dass der zentrale Parameter 'seite' heißen soll (kann natürlich auch 'page', 'page-id', oder ganz etwas anderes sein; auch 'krokodilsledertasche' ginge, wäre aber vielleicht etwas lang).

    Diesen Parameter würdest Du je nach Ziel an die Adresse anhängen, und zwar am besten an die Adresse Deiner zentralen Datei, die, wie oben schon erwähnt für die Steuerung zuständig ist. Dies nennen wir "index.php", weil's so nett praktisch ist ;)

    Möchtest Du Seite 1 sehen, könnte die Zieladresse so lauten: index.php?seite=1. Statt dessen Seite 3? - Kein Problem, erreichbar via index.php?seite=3.

    Innerhalb der der »magischen« index.php fragst Du einfach den URL-Parameter über das assoziative Array $_GET ab und lässt diese über einen Switch laufen. Etwa so:

    PHP:
    <?

        require_once (
    'header_mit_der_immergleichen_navigation.inc.php');

        switch (
    $_GET ['seite']) {
            case 
    '5':
                 require_once (
    'inhalt_5.inc.php');
                 break;
            case 
    '4':
                 require_once (
    'inhalt_4.inc.php');
                 break;
            case 
    '3':
                 require_once (
    'inhalt_3.inc.php');
                 break;
            case 
    '2':
                 require_once (
    'inhalt_2.inc.php');
                 break;
            case 
    '1':
            default:
                 require_once (
    'inhalt_1.inc.php');
                 break;
        }

    ?>
    Jetzt hast Du so ziemlich vereinfach das, was Du ungefähr haben wolltest. Pass nur bitte dabei auf, dass Du keinen URL-Parameter ungeprüft verarbeitest, dabei können böse Sicherheitslücken entstehen ;)

    Viel Erfolg!
     
  4. cym

    cym Thread Starter MacUser Mitglied

    Beiträge:
    1.352
    Zustimmungen:
    9
    Registriert seit:
    03.05.2004
    Danke für eure Antworten! Ich würde schon gerne PHP lernen. Aber leider habe ich momentan keine Zeit. Aber falls ich dann 90 bin, fange ich vielleicht mal damit an :D
    Auch danke für das Beispiel. Werd' ich ausprobieren. :)
     
    Zuletzt bearbeitet: 12.04.2005
  5. simusch

    simusch MacUser Mitglied

    Beiträge:
    2.221
    Zustimmungen:
    186
    Registriert seit:
    27.09.2004
    also das geht doch auch einfacher??

    - eine html-seite, mit erweiterung .php

    - an der stelle, wo das bild hinkommt:

    PHP:
    if(!isset($_GET[bild]))
    {
        
    $bild 1;
    }
    else
    {
        
    $bild $_GET[bild];
    }

    $naechstes_bild $bild++;

    echo 
    "<a href='seite.php?bild=".$naechstes_bild."'><img src='bild".$bild.".jpg' width='...' height='...' border='0'></a>";
    warum nicht so?
     
  6. simusch

    simusch MacUser Mitglied

    Beiträge:
    2.221
    Zustimmungen:
    186
    Registriert seit:
    27.09.2004
    und in dem fall ist die ungeprüfte variable keine sicherheitslücke... weil bei einem falschen wert einfach kein bild angezeigt wird...

    solange man nicht

    PHP:
    echo $_GET[var]();
    macht... und dann irgendwelche funktionen ausführen kann... ;-)
     
  7. Nogger

    Nogger MacUser Mitglied

    Beiträge:
    367
    Zustimmungen:
    0
    Registriert seit:
    03.08.2004
    Naja, prinzipiell kann man in deinem Beispiel beliebigen Code in die Webseite schreiben. Ob das für Cross Side Scriptiing ausgenutzt werden kann ist, hängt dann natürlich von dem Rest der Anwendung ab.

    Explizite Typumwandlung sollte hier ausreichen. Und die Anführungszeichen um den Arrayschlüssel nicht vergessen.

    $bild = (int)$_GET["bild"];

    Außerdem hast du einen Logikfehler drin. Aufruf mit bild=1 würde bild2.jpg anzeigen.

    Hilarious' Variante ist aber robuster. Wenn man sie bei deiner Variante beim Wert für bild vertippt, und eine nicht vorhandene Nummer angibt, gibt es ein kaputtes Bild. (Aber du hast eh eine Endlosgalerie ;-)
     
  8. simusch

    simusch MacUser Mitglied

    Beiträge:
    2.221
    Zustimmungen:
    186
    Registriert seit:
    27.09.2004
    okeeyy....

    hab ja den code nur schnell hingetippt... ;)
     
  9. Nogger

    Nogger MacUser Mitglied

    Beiträge:
    367
    Zustimmungen:
    0
    Registriert seit:
    03.08.2004
    Das Problem mit schnell hingetipptem Code ist, das er Anfängern schlechten Codestil zeigt. Sie können das aber nicht selbst erkennen und lernen schlampigen Stil.

    Von der Anwendungslogik her ist gegen deine Variante ja nichts zu sagen. Ist halt auch eine mögliche Lösung.
     
  10. BadHorsie

    BadHorsie MacUser Mitglied

    Beiträge:
    335
    Zustimmungen:
    0
    Registriert seit:
    21.04.2004
    Sowas macht man viel einfacher und schneller mit JavaScript. Div mit ID anlegen und bei einem Klick auf eine Zahl etwas in der Form "getElementById[ID].innerHTML=<img src="Bild.jpg" />"

    BadHorsie
     
Die Seite wird geladen...
Ähnliche Themen - Seitenchaos vermeiden PHP Forum Datum
Werte der gleichen Schlüssel summieren (assoziativen Array) Web-Programmierung 25.08.2016
einfaches php. emailformular bei strato Web-Programmierung 08.08.2015
PHP Array in Google Maps Wegpunkte umwandeln Web-Programmierung 13.03.2015
PHP Update auf 5.6 im Terminal für Localhost (MAMP und Laravel) Web-Programmierung 12.09.2014
Doppelposts mit Safari vermeiden Web-Programmierung 03.04.2008

Diese Seite empfehlen

Benutzerdefinierte Suche