eure favoriten-verlinkung




eUncle
06.05.2007, 16:29 Uhr
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




Gast
06.05.2007, 17:40 Uhr
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

eUncle
06.05.2007, 17:54 Uhr
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

Gast
06.05.2007, 18:23 Uhr
Zitat:
Zitat von eUncle
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




eUncle
06.05.2007, 19:14 Uhr
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

Gast
06.05.2007, 19:33 Uhr
Achso... ich hab das alles modular aufgebaut - die variablen sind eigentlich dateinamen die dann inkludiert werden
#6

eUncle
06.05.2007, 19:37 Uhr
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

little_peanut
06.05.2007, 19:38 Uhr
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

eUncle
06.05.2007, 19:40 Uhr
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

little_peanut
06.05.2007, 19:42 Uhr
Das ist doch nicht komplex. Äußerst flexibel, mehr nicht.

:google: mal CHMOD. Ist ganz einfach. Sind im Endeffekt Zugriffsrechte auf Webservern.
#10

eUncle
06.05.2007, 19:45 Uhr
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

Gast
06.05.2007, 19:51 Uhr
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

little_peanut
06.05.2007, 19:55 Uhr
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

eUncle
06.05.2007, 19:56 Uhr
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

Gast
06.05.2007, 20:13 Uhr
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

little_peanut
06.05.2007, 20:13 Uhr
@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

Gast
06.05.2007, 20:14 Uhr
Oder man benutzt den Unterdrücker @
#17

little_peanut
06.05.2007, 20:16 Uhr
Stimmt. :klatsch: Total vergessen.
#18

Gast
06.05.2007, 20:20 Uhr
Wegen kompliziert, er will ja auch noch ".php" angehängt haben^^
#19

eUncle
06.05.2007, 20:21 Uhr
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

little_peanut
07.05.2007, 14:55 Uhr
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

eUncle
07.05.2007, 15:17 Uhr
@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

Gast
06.06.2007, 00:08 Uhr
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

eUncle
06.06.2007, 00:23 Uhr
naja, ganz nett, aber den "nur-php-include"-Teil bräucht man eigentlich nicht - gut kommt druff an, für welchen Anwendungszweck...
#24

Gast
06.06.2007, 00:32 Uhr
Doch doch, den braucht's.
Denn das Array content hat auch zwei Variablen mit "." und ".." als Inhalt.


[Zur Link-Ansicht bitte registrieren.]

#25

eUncle
06.06.2007, 00:49 Uhr
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

Gast
06.06.2007, 01:13 Uhr
"." und ".."
#27

eUncle
06.06.2007, 01:29 Uhr
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

Gast
07.06.2007, 11:13 Uhr
Wie meinst du das mit Striptags? Ich kann nichtmal welche sehen. ^^
#29

eUncle
07.06.2007, 11:45 Uhr
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

Gast
07.06.2007, 19:48 Uhr
Okay werde erstmal wieder klar. ^^
#31

eUncle
08.06.2007, 09:42 Uhr
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

Gast
08.06.2007, 11:52 Uhr
ich mach es immer mit "?mod=news" ohne index davor
#33

eUncle
08.06.2007, 12:22 Uhr
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

Gast
08.06.2007, 13:42 Uhr
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


Facebook

Jahresarchive