Links mit php

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Links mit php

    Hallo ihr php Profis

    ich bins mal wieder! Habe eine (für euch wahrscheinlich) ganz dumme Frage!

    Und zwar habe ich mittlerweile eine sehr große Webseite. Ich möchte gerne wenn auf Subseiten verlinkt wird, dass nicht die Url (http://www.meinedomäne.de/sub/sub/index.php) steht sondern www.meinedomäne.de?page=contact&id=1 steht oder so ähnlich!

    ich denke man sollte auf root ein Verzeichnis anlegen mit diesen Bezeichnungen und die Pfagde anlegen, nur weiß ich nicht wie und meine naiven (um nicht zu sagen blöden) anfänglichen Versuche sind alle kläglich gescheitert.

    Kann mir da bitte jemand (mal wieder) helfen? Wäre euch sehr dankbar.

  • #2
    Hallo,
    wenn du eine Datei mit Parametern öffnest, also
    index.php?site=news
    kannst du in der index.php die übergebenen parameter abrufen.

    In unserem Beispiel könntest du
    PHP-Code:
    if ($_GET['site'] == "news")[
     echo 
    "du bist auf der news seite";

    Dieses Beispiel gibt dann natürlich "du bist auf der news seite" aus.

    Ich hoffe ich konnte dir helfen,

    Keppi
    Zuletzt geändert von keppi2; 16.12.2008, 17:10.
    Von der Erstellung einer Homepage bis Suchmaschienenoptimierung:
    paradi.de - Paradi IT Dienstleistungen - Webentwicklung, Webhosting, Programmierung

    Kommentar


    • #3
      Ok. Dies ist eine Textausgabe, aber wie komme ich in die subpfade.

      Beispiel:
      Eine drückt bei den Link Kontakt.

      Dann sieht das zz bei mir so aus:

      Link: <a href="http://www.meinedomäne.de/contact/index.php">Kontakt</a>
      Adresszeile: http://www.meinedomäne.de/contact/index.php


      ich möchte es jetzt so haben, dass der Link so aus sieht:
      <a href="http://www.meinedomäne.de?site=contact">Kontakt>/a>
      Adresszeile: http://www.meinedomäne.de/index.php?site=contact

      jetzt muss ja noch irgendwo angegeben werden wenn der parameter site = Kontakt ist, auf welchen Pfad er dann springt.


      Zur Erklärung: Ich möchte nichts includen. Also keine 2 definierten Bereiche einen festen und einen content Bereich wo das reingeladen wird, sondern es soll schon sein dass er wie vorher tatsächlich auf einen anderen Pfad springt und die dort enthaltene Seite anzeigt.


      Ich denke es muss ja dann auch eine "config" datei auf root gelegt werden, wo die parameter mit den verschieden werten mit einem Pfad gleichgesetzt werden.?

      Aber danke schonmal für deine schnelle Antwort.

      Kommentar


      • #4
        Wenn du einfach nur eine Weiterleitung machen willst, probiere es mit header("location: pfad");

        Dann steht aber auch der aktuelle Pfad in der Adresszeile.

        Wieso willst du die Datein nicht includen? Ich würde es damit probieren.

        Keppi
        Von der Erstellung einer Homepage bis Suchmaschienenoptimierung:
        paradi.de - Paradi IT Dienstleistungen - Webentwicklung, Webhosting, Programmierung

        Kommentar


        • #5
          http://tut.php-q.net/frames.html

          Kommentar


          • #6
            Original geschrieben von noob_in_php
            jetzt muss ja noch irgendwo angegeben werden wenn der parameter site = Kontakt ist, auf welchen Pfad er dann springt.
            ja, das hast du schön erkannt. und warum bringst du es denn deinem front-controller nicht bei, bzw. was hindert dich daran?

            Kommentar


            • #7
              front-controller ---> wie wo was? was ist das? Ich bin ein richtiger Anfänger und habe jetzt schon wieder sehtr lange damit verbracht etwas dazu zu finden!

              die Möglichkeit mit den Frames ist voll daneben, damit kann ich nichts anfangen. Ich möchte einfach wie schon erwähnt mit diesen parametern
              ?site=contact&id=1 usw arbeiten. Ich möchte nichts includen, keine Frames oder sonstiges. Ich möchte einfach das bei dem parameter
              ?site=contact&id=1 er auf den Pfad "http://www.meinedomände.de/contact/tel/index.php" springt. Auf diesem Pfad liegt eine eigene php seite, die dann angezeigt werden soll.

              in der Adresszeile steht dann http://www.meinedomände.de/index.php?site=contact&id=1

              und nicht mehr der komplette Pfad wo der Browser sich jetzt drauf befindet. Ich hoffe ich konnte es ein wenig verständlich erklären. Werde aber mit der Idee "front controller" weiter suchen.



              edit:
              ich denke irgendwas in dieser art:

              <A href="?page=contact">kontakt</A> -
              <A href="?page=contact&id=1">Telefonkontakt</A> -
              <A href="?page=contact&id=2">Schriftkontakt</A>



              <? switch($page) {
              <? break; default:?>
              http://www.meinedomäne.de/index.php


              <? break; case "contact" :?>
              http://www.meinedomäne.de/contact/index.php

              <? break; case "contact&id=1" :?>
              http://www.meinedomäne.de/contact/telefonisch/index.php

              <? break; case "contact&id=2" :?>
              http://www.meinedomäne.de/contact/schriftlich/index.php


              }?>


              Wird bestimmt voll der Quatsch sein, aber vielleicht kann ja jemand noch was zu sagen. Ich liege doch auch da richtig wenn ich denke, dass diese break sachen mit in der index.php liegen müssen, wo ich die Links habe oder kann ich die auch einfach von root includen und brauch nur eine davon zu erstellen für alle seiten? wäre leichter zu pflegen. wäre echt glücklich für ein wenig prof Hilfe.
              Zuletzt geändert von noob_in_php; 02.06.2007, 10:15.

              Kommentar


              • #8
                Du kannst Deine Links so machen:

                <A href="index.php?page=contact">kontakt</A>

                Und dann fragst in der index.php ganz oben ab ob was in page steht und wenn ja was:
                PHP-Code:
                if(isset($_GET['page'])){
                   if (
                $_GET['page'] == "contact"){
                      
                //entweder include
                      
                include "contact.php";
                      
                // oder header Location
                      
                header("Location: http:/ /www.domain.de/contact.php");
                      } 
                Der angegebene Link zum Quake-Tutorial ist nicht "daneben", sondern Du kapierst es halt nicht.

                Und solange Du nicht verstehst wie header Location bzw. include funktioniert wird Dir der obige Code auch nicht weiterhelfen.

                Wenn Du nämlich nur willst, daß nach dem Klicken auf einen Link zu einer Seite "gesprungen" wird, dann tut es auch ganz normales html:

                <a href="contact.php">Kontakt</a>

                Wenn Du nur willst, daß es in der Adreßzeile anders aussieht, dann kannst das mit mod rewrite lösen - dazu brauchst aber wieder Kenntnisse in Bezug auf reguläre Ausdrücke.

                Ganz wichtig ist auf jeden Fall, daß Du Dich so ausdrückt, daß andere auch verstehn was Du eigentlich willst.
                Zuletzt geändert von Koala; 02.06.2007, 10:31.

                Kommentar


                • #9
                  ja ich kapier es halt nicht...

                  war nicht so gemeint wie du es glaube ich jetzt aufgefasst hast. aber danke für die blumen..

                  übrigens solltest du die abschließende "}" nicht vergessen sonst läuft es nicht!


                  und den link sollte man folgendermaßen schreiben:
                  <A href="?page=contact">kontakt</A>
                  Zuletzt geändert von noob_in_php; 02.06.2007, 11:05.

                  Kommentar


                  • #10
                    übrigens solltest du die abschließende "}" nicht vergessen sonst läuft es nicht!
                    Danke - glaubst Du ich teste noch mal auf jeden Syntaxfehler bevor ich hier ne Lösung poste.

                    Ein bißchen "flicken" und umschreiben dürfen die Fragesteller selber - hier wird Hilfe zur Selbsthilfe geboten.

                    Du bist herzlich eingeladen hier anderen zu Helfen und es noch besser zu machen.

                    Kommentar


                    • #11
                      Noch ne Frage Koala:
                      Kann es sein, dass jetzt der Pfad doch einfach übernommen wird? Ich wollte diese Pfade einfach verstecken und ich dachte wenn ich es damit versuche das dann oben in der Adressleiste auch domäne.de/index.php?site=contact übernommen wird.

                      ich denke der pfad wird trotzdem so wie sonst auch angezeigt.

                      Kommentar


                      • #12
                        Pfade verstecken/umschreiben kannst mit mod rewrite.

                        Daz werden diverse Angaben in die .htaccess geschrieben.

                        Googlen nach "mod rewrite" hilft. Das ist ein komplexes Thema, sieh auch reguläre Ausdrücke.

                        Kommentar


                        • #13
                          Original geschrieben von keppi2
                          Wenn du einfach nur eine Weiterleitung machen willst, probiere es mit header("location: pfad");

                          Dann steht aber auch der aktuelle Pfad in der Adresszeile.
                          Du hast aber immer noch nicht gesagt warum du nicht includen willst, ich denke dies ist einfach die beste Möglichkeit wenn du keine sehbare Weiterleitung benutzen möchtest.

                          Keppi
                          Von der Erstellung einer Homepage bis Suchmaschienenoptimierung:
                          paradi.de - Paradi IT Dienstleistungen - Webentwicklung, Webhosting, Programmierung

                          Kommentar


                          • #14
                            weil das im prinzip alles komplett verschiedene tpls sind, das wäre mir jetzt noch zu viel arbeit und plan hab ich davon auch keinen. weiß zwar wie man was includet aber bei diesem kram muss ich ja irgendwie drei bereiche definieren. zb navi, content und banner oder so. ich stehe was das angeht ziehmlich unter zeitdruck. muss den kram fertig kriegen.


                            @koala: mode_rewrite ist ne tolle sache von allen dingen wenn man noch nie was mit gemacht hat. habe mich jetzt inzwischen durchgewurschtelt. ich habe folgendes erstellt:

                            .htaccess datei auf dem pfad, wo in der adressleiste die varaiblen vom link übernommen werden sollen (also hier in meinedomäne.de/contact

                            .htaccess
                            PHP-Code:
                            RewriteEngine on
                            RewriteRule   
                            ^([^./]+)/?$                     index.php?site=$[L
                            RewriteRule   ^([^./]+)/([^./]+)/?$            index.php?site=$1&query=$[L
                            RewriteRule   ^([^./]+)/([^./]+)/([^./]+)/?$   index.php?
                            site=$1&query=$2&id=$[L


                            der link zum kontakt war folgender:
                            PHP-Code:
                            <?php
                            if(isset($_GET['site'])){
                               if (
                            $_GET['site'] == "contact"){
                               
                            header("Location: meinedomäne.de/contact/index.php");
                               }
                               }
                             
                            ?>

                            <A href="?site=contact">kontakt</A>


                            liegt die .htaccess am richtigen ort? wo liegt mein Fehler? der gleiche mist steht immernoch in der adressleiste mit dem kompletten pfad. hiiliife



                            edit:
                            mir ist auch aufgefallen, dass diese .htaccess sofort nach kopieren auf den Server sie gleich wieder gelöscht ist! Gibts da irgend etwas bekanntes drüber oder bin ich einfach nur zu blöd für so ein kram?
                            Zuletzt geändert von noob_in_php; 02.06.2007, 12:24.

                            Kommentar


                            • #15
                              hat denn keiner mehr eine Idee dazu?

                              Kommentar

                              Lädt...
                              X