Wie verlinkt ihr auf euren Websites?
Ich möchte, wenn man z.B. auf "Link_1" klickt, dass in ein Bereich immer andere php-files includiert werden, doch bei strato scheint meine geliebte switch-case nicht zu funktionieren...
n link hat dann immer so ausgesehen: PHP-Code: <a href="index.php?VARIABLE=link_1>Link_1</a>
| | #1 |
|
also auf anhieb seh ich schomal, dass du ein "-Zeichen vergessen hast:
<a href="index.php?VARIABLE=link_1">Link_1</a>
wenn dein webspace php-fähig ist, dann hast du sicherlich einen fehler in deiner switch-anweisung.
| | #2 | |
lol, ja, das Anführungszeichen hab ich hier halt vergessen...
Nope, das kannst du zu 100% ausschließen: dacht ich auch, hab extra ein funktionierendes (von einem funpic-space) kopiert... --> nischt
Space ist PHP-fähig, keine Frage...
| | #3 | Zitat: | Wie verlinkt ihr auf euren Websites? | Ist das jetzt eine Meta-Frage, damit du auf dein Scriptproblem aufmerksam machen kannst, oder willst du darauf echt eine Antwort haben? :hmm:
| | #4 |
|
ne eher beides: wissen, wie ihr das macht, und gleichzeitig auch der Grund meines Problems herausfinden - liegt aber definitiv am Space!
HeNrY hat im pctflux ungefähr das selbe prinzip
| | #5 | |
Achso... ich hab das alles modular aufgebaut - die variablen sind eigentlich dateinamen die dann inkludiert werden
| | #6 | |
ja, das ist ja egal, du hast ja auch net das hässliche href="seiten/seite1.html"-Verfahren... :P
auch index.php?VARIABLE=irgendwas...
und das irgendwas wird dann geswitched auf'ne .php-file (so hab ich das immer mit switch-case gemacht)
...hat auch immer zuverlässig funktioniert, nur jetzt beim strato-space nicht
Kannst ja mal deinen script klein machen und kurz posten, aber so wie's aussieht, ist er gleich wie meiner^^
PS: PM gelesen? ;D
| | #7 |
ich mach ungefähr folgendes: PHP-Code:
<a href="index.php?action=startseite.php">Link</a>
<?
include($_GET['action']);
?> das setzt aber voraus, dass du ahnung von CHMOD hast und weißt, wie du die restlichen verzeichnisse von unbefugtem zugriff schützt. Es kann ja sonst auch jeder beispielsweise auf index.php?action=users/.htdocs zugreifen. Oder andere sensible Daten, die nun mit Root-Rechten (da von PHP-Script geöffnet) geöffnet werden können.
| | #8 | |
chmod: kein blassen Schimmer
...naja, du hast das n bissl komplex gelöst.
Bei mir konntest du auch auf nix anders zugreifen, sobald was unbekanntes kam, sprang "default" rein
| | #9 | |
Das ist doch nicht komplex. Äußerst flexibel, mehr nicht.
:google: mal CHMOD. Ist ganz einfach. Sind im Endeffekt Zugriffsrechte auf Webservern.
| | #10 |
jop, und das möcht ich jetzt nicht, da die Rechte vergeben etc.
Hier mal mein script, den ich total genial find':
die Datei 'action.php' wird in die index.php includiert...
folgendes steht in der action.php: PHP-Code: <?
if ($action == home) { ; } elseif ($action == email) { ; }
switch ($action) { case home: include("path/home.php"); break; case email: include("path/email.php"); break;
default: include("path/home.php"); }
?>
die passenden Links dann: PHP-Code: <a href="index.php?action=home">Home</a> <a href="index.php?action=email">Email</a>
#E#
...die IF am Anfang könnte man sich sparen, man kann aber ab&zu wieder was lustiges einbauen
| | #11 |
Viel zu aufwendig, das frisst Performance
Mach es so wie unsere Erdnuss, mit einer kleinen Abfrage drinn PHP-Code:
<a href="index.php?action=startseite.php">Link</a>
<?php if (! include($_GET['action'])) { include("ausweichdatei.php"); } ?> | | #12 |
Jop. Dann kann man noch error_reporting(0); damit diese hässlichen PHP-Error-Meldungen nicht angezeigt werden. Zweitens kann dann noch rein: PHP-Code: if(strpos ($action, "/")>-1)
{
include(ausweichdatei);
}
Damit keine Unterordner und deren Inhalt inkludiert werden können.
| | #13 |
das müsste dann ja eigentlich auch locker oder die .php-Endung funktionieren: PHP-Code: include($_GET['action']'.php')
(oder sowas in der Ar )
sodass ich die URLs immer ohne .php-Endung schreiben kann:
index.php?action=irgendwas
#E#
@HeNrY: hast Du es denn auch so?
#E2# Zitat: |
Zitat von p_nut PHP-Code: <?
include($_GET['action']);
?> | funzt, d.h. alles andere mit diesem Prinzip würde auch funktionieren!
Ich hab mal dem strato-service gemailt, ich möchte zugern wissen, warum das bisher überall, außer bei strato funktioniert hat...
| | #14 |
dann schon eher so PHP-Code: <?php $action = $_GET['action'].".php"; if(strpos ($action, "/")>-1) { include("ausweichdatei.php"); } elseif (!@include($_GET['action'])) { include("ausweichdatei.php"); } ?> Anstatt $_GET kann man auch $_REQUEST benutzen^^
| | #15 |
@eUncle: Und wenn du dann noch error_reporting(0); setzt, dann wird ausschließlich deine gewünschte Fehlerseite angezeigt und die PHP-generierte Fehlermeldung weggelassen.
@HeNrY: Wieso so kompliziert? PHP-Code: <?
$action = $_GET['action'];
if(strpos ($action, "/")>-1) { $action="error.php"; } if(!$action) { $action="startseite.php"; }
if(!@include($action)) { include("error.php"); }
?> So würd ich's spontan machen.
| | #16 | |
Oder man benutzt den Unterdrücker @
| | #17 | |
Stimmt. :klatsch: Total vergessen.
| | #18 | |
Wegen kompliziert, er will ja auch noch ".php" angehängt haben^^
| | #19 |
ich bräucht den "Linkteil" dann in etwa so: PHP-Code: "path/".$_GET['action'].".php"
jap, error_reporting(0); ist ne feine Sache
jonny, ich versteh' grad dein letzten script hier net ganz:
wie funktioniert: $action = $_GET['action']; ?
...dann wird doch die site nirgends includiert?!
oder machst dann irgendwo echo $action?
PS: vlt. steh' ich auch wieder auf'm Schlauch :P
#E# PHP-Code: $action = "path/".$_GET['action'].".php";
if(!$action)
{
$action="startseite.php";
}
if(!@include($action))
{
include("error.php");
}
...so würde's schon ganz prima funktioniern!
Nur ich will das ja auch noch verstehen, und bekomm's heute Abend glaub' nicht mir in meine Birne... da ist ja nirgends ne Ausgabe?! Lediglich $action=wert
| | #20 |
Spezi. Ich weise doch bloß einer x-beliebigen Variable (in dem Fall $action) den Wert zu, der per Adresszeile geschickt wird: $_GET['name-der-adresszeilen-variable']
Hat den Sinn, dass nicht ständig $_GET['action'] geschrieben werden brauch, sondern nur $action. Kann gut sein, dass du $_GET[] bei dir gar nicht brauchst. Ich meine, dass dein PHP $action sofort als Variable... moment... Mir kommt grad ein Gedanke.
Hast du bei deinem case-Script vorher die Variable $action auch per GET aus der Adresszeile geholt? PHP-Code: $action = $_GET['action']; // das hier!!
if ($action == home) { ; } elseif ($action == email) { ; }
switch ($action) { case home: include("path/home.php"); break; case email: include("path/email.php"); break;
default: include("path/home.php"); }
Das würde nämlich erklären, warum es nicht funktioniert. Einige PHP-Versionen (ich glaub 4.xx) brauchen keine klare Deklaration von globalen Variablen. Da das aber zu Komplikationen führte, ist das ab 5.x geändert worden. Alles was per GET (Adresszeile) oder per POST (Formulareingaben) an PHP übergeben wird, muss mit der globalen Variable $_GET['var'] bzw. $_POST['var'] ausgelesen werden.
Und da ich ahne, dass du nichts von globalen Variablen weißt --> [Zur Link-Ansicht bitte registrieren.] | | #21 | |
@case-switch: junge ...es hat überall funktioniert, bis auf dem strato-space :fresse:
@Funktion: ja, das weiß ich, aber es wird ja direkt nichts ausgegeben...obwohl, doch, ich glaub ich hab's - kein wort mehr bitte ;D
(...ansonsten verwirrst mich :P)
@glob. Variablen: doch, doch - sind mir teilweise bekannt
Also das script funktioniert jetzt einwandfrei, hab's noch für mich angepasst, aber eig. das geliche Prinzip - da habt ihr mir jetzt mal ca. 100-150-Zeilen php erspart, danke ;D
| | #22 |
Was haltet ihr von meinen Code? PHP-Code: if (!isset($_GET['action'])) include "content/index.php";
else {
$content = scandir("content");
$incfile = "lvl2/error.php";
foreach ($content as $file) {
if (substr($file , -4) == ".php") { /*nur PHP-Dateien werden includet*/
if ($file == $_GET['action']) $incfile = $_GET['action'];
}
}
include ("content/".$incfile);
}
Im vergleich mit dem was bisher gepostet wurde, ist mein Code ja ein bisschen kürzer und einfacher.
Deswegen interessiert mich jetzt mal eure Meinung dazu.
| | #23 | |
naja, ganz nett, aber den "nur-php-include"-Teil bräucht man eigentlich nicht - gut kommt druff an, für welchen Anwendungszweck...
| | #24 |
Doch doch, den braucht's.
Denn das Array content hat auch zwei Variablen mit "." und ".." als Inhalt. [Zur Link-Ansicht bitte registrieren.] | | #25 | |
ich kenne scandir :hmm:
Nur hallte ICH es für überflüssig, script an sich ist ja schön&recht, aber ich halt es nunmal für überflüssig
| | #26 | |
nö, setz doch einfach nen ordner davor, als Variable...dann kann man nur in einem Ordner "rumhacken"
...ansonsten, was auch überflüssig ist, striptags setzen
| | #28 | |
Wie meinst du das mit Striptags? Ich kann nichtmal welche sehen. ^^
| | #29 | |
na, du "filterst" ja "." und ".." ja auch raus, sowas kannst aber genauso einfach mit striptags machen - ich hab grad net den Kopf dafür...
Ich schreib dir, wenn ich wieder nen angenehmen Pegel hab (siehe Smalltalk)
| | #30 | |
Okay werde erstmal wieder klar. ^^
| | #31 |
sodele, FAST, aber auch nur fast, ausgeschlafen, Pegel müsste ziemlich bei 0 liegen ;D
btw: Ich finde jonnys Verlinkung sehr elegant
z.B. [Zur Link-Ansicht bitte registrieren.] oder [Zur Link-Ansicht bitte registrieren.]
läuft bei ihm ja alles über'ne .htaccess-Datei - ist ihm sehr gelungen :nick:
| | #32 | |
ich mach es immer mit "?mod=news" ohne index davor
| | #33 | |
wie geht das?
du hast doch in irgend einer Datei eine Variable stehen?
Bsp:
In der Datei test.php steht $link
=> test.php?link=irgendwas
| | #34 | |
nimms nicht persönlich aber wie ich schon mal sagte, werde ich dir in punkto php/sql gar nix mehr erklären
| | #35 | Andere Themen im Webentwicklung & Programmierung Forum | | |