Avatar billede tbird Nybegynder
15. august 2002 - 11:37 Der er 16 kommentarer og
2 løsninger

Sikker ganske simpelt

Hej jeg er begyndt at arbejde lidt med PHP.
Jeg har lavet noget som virker og kender en del af de helt basale ting.

Jeg kunne godt tænke mig at vide hvordan jeg får en dynamisk side, altså en index.php hvor indholdet bliver skiftet. Dvs. jeg har oprettet index.php med lidt menu struktur, nu er sagen den at jeg gerne vil have at et link åbner pictures.php blot inde i denne index.php's tabel/menu

Jeg har set sider der bliver åbnet med <a href="index.php?side=pics">Billeder</a>

Men jeg prøvede at lave en if-sætning der lød på, if($pics) include ("pictures.php") men det hjalp ikke helt.

Er der nogen der kan komme med et grundigt eksempel på hvorledes dette skal gøres? Eller er der en anden lettere måde?

Håber i forstår hvad jeg mener...
Avatar billede dmcn Praktikant
15. august 2002 - 11:43 #1
Du har nu haft gang i det rigtige.

if ($_GET['side'] == "pics") {
    include("billeder.php");
} elseif ($_GET['side'] == "kontakt") {
    include("kontakt.php");
} else {
    include("index.php");
}
Avatar billede tbird Nybegynder
15. august 2002 - 11:51 #2
Hmm jeg prøver lige lidt og ser om jeg kan få det til at virke ordentligt.. vender tilbage...
Avatar billede jakoba Nybegynder
15. august 2002 - 12:30 #3
når du siger include skal der altid { og } onkring selvom det ligner kun een sætning. includen behandles somom den var så mange sætninger som der står i din include-fil.
Avatar billede 7th Praktikant
15. august 2002 - 13:26 #4
Jeg er selv på samme stadie som dig. Til min menu struktur har jeg brugt switch case sætninger, da jeg synes det er lidt mere overskueligt end de mange if else sætninger. Et lille eksempel kunne f.eks være...

switch ($din_variabel)
{
case 1: include "c.php"; break;
case 2: include "c.php"; break;
case 3: include "c.php"; break;
}

eller endnu mere simpelt...

if (! isset ($din_variabel)) // hvis $din_variabel er tom
{
include "din_start_side.php";
}

else
{
include "$din_variabel.php";
}
Avatar billede 7th Praktikant
15. august 2002 - 13:28 #5
Hovsa case 1, hvor 1 i dit eksempel så er pics i stedet for. Altså i tilfælde af at $din_variabel = pics (side = pics) så...
Avatar billede intel4004 Novice
15. august 2002 - 13:41 #6
Jeg gør sådan her:

I starten af mit index.php har jeg:

<?php
if (!isset($_GET['index'])) {$_GET['index'] = 'home.php'}
$IndexFeed = $_GET['index'];
?>

...

Og nede hvor jeg vil have min side vist:

<div class="IndexFeed">
<?php Include($IndexFeed); ?>
</div>

Det vil så sige at jeg ved et link faktisk kun behøver at gøre sådan:

<a href=?index=kontakt.php>Kontakt siden</a>

Altså hentes contact.php ind det ønskede sted i index.php.

Uden parametre til index.php hentes home.php.

Mvh Intel4004
Avatar billede tbird Nybegynder
15. august 2002 - 14:40 #7
Hvordan mener du med i starten af din index.php?? Jeg prøve at lave det sådan her...

<?
if (!isset($_GET['index']))
{$_GET['index'] = 'home.php'}  //Hvilken fil er denne home?? er det startsiden? Har også ændret den til pics.php
$IndexFeed = $_GET['index'];
?>

<html>
<head>
<title> </title>
</head>
<body>

[Her er så nogle tabeller osv.]

<div class="IndexFeed">    //skal <div> tagget ind i den tabel hvor jeg vil vise siden??
<?php Include($IndexFeed); ?>
</div>

</body>

Jeg er lidt på herrens mark fordi jeg får fejl i denne linie
{$_GET['index'] = 'home.php'}

Men tak for den hjælp i giver...
Avatar billede thez Nybegynder
15. august 2002 - 14:42 #8
> 7th
Dit sidste "eller endnu mere simpelt..." eksempel skal man altså holde sig lang fra!!
Forestil dig jeg skrev sådan i browseren: http://wwww.domain.dk/index.php?side=/etc/passwd
Pludselig ka jeg se dine passwords, som netop ikke bliver parset gennem PHP, eller hvad om jeg skrev et lille script som spytter source kode ud og lagde på min egen server, og skrev i browseren http://wwww.domain.dk/index.php?side=http://www.minserver.dk/mitscript.php
så ka jeg få source koden til alt hvad du har, inklusiv måske kodeord til MySQL osv osv osv...

Brug aldrig include ("$din_variabel.php");

Personligt bruger jeg altid swtich() case funktionen

Med venlig hilsen
Simon
Avatar billede tbird Nybegynder
15. august 2002 - 15:37 #9
HJÆLP!! parse error in index.php on line 2
Det fungerer slet ikke...

Nu har jeg endda kogt min index.php helt ned og har kun uploaded 3 filer
index.php:
<?
if (!isset($_GET['index'])) {$_GET['index'] = 'home.php'}
$IndexFeed = $_GET['index'];
?>
<html>
<head>
<title>Test</title>
</head>

<body>
TEST!
<br>
<a href=?index=pics.php>side</a>
<br>
<table border="1">
<tr>
<td>Her kommer der billeder</td>
<td><? Include($IndexFeed); ?>test</td>
</tr>
</table>
</body>
</html>

pics.php:
<? echo "Billederne skal være her" ?>

home.php:
<?
echo "TEST";
echo "<br>";
echo "hej";
?>

Jeg ka ik' hit u' af det!
Avatar billede jakoba Nybegynder
15. august 2002 - 15:43 #10
det er blot at du har glemt at afslutte med ;

if (!isset($_GET['index'])) {$_GET['index'] = 'home.php';}
Avatar billede tbird Nybegynder
15. august 2002 - 15:55 #11
Det var dog det stiveste!!!! Det havde jeg ikke lige set - nu havde jeg jo også bare copy/pasted det ;)
(Hvis du sender et svar kan du få del i pointene...)

Jeg vender tilbage og uddeler senere eller spørger lidt mere dybtgående, nu skal jeg lige kigge lidt på det jeg har lært.
Avatar billede intel4004 Novice
15. august 2002 - 17:13 #12
Ja, jeg havde lige glemt et simicolon, det må du sku undskylde. :)

thez>> Hvad mener du med et script der kan vise kildekode? Vil du bruge highlight_file()?? Jamen kan denne vise kilden på andre filer end dem som er tilstede på serverens filsystem??

Intel4004
Avatar billede 7th Praktikant
16. august 2002 - 07:38 #13
thez : aha, måske lidt for simpelt og nemt i mere end en forstand så ;)
Avatar billede thez Nybegynder
16. august 2002 - 09:19 #14
>> 7th
Ja :o) Det var heller ikke for at dishe din code, det var mere for at gøre opmærksom på det!
Det har faktisk også ændret sig, efter lige at ha chekket på www.php.net så jeg at der stod

If "URL fopen wrappers" are enabled in PHP (which they are in the default configuration), you can specify the file to be included using an URL (via HTTP) instead of a local pathname. If the target server interprets the target file as PHP code, variables may be passed to the included file using an URL request string as used with HTTP GET. This is not strictly speaking the same thing as including the file and having it inherit the parent file's variable scope; the script is actually being run on the remote server and the result is then being included into the local script.


Men jeg er rimlig sikker på at det ikke altid har været sådan, for der har været snak om at man kunne gøre som jeg forklarede

Med venlig hilsen
Simon
Avatar billede intel4004 Novice
16. august 2002 - 09:28 #15
Jeg har nu ændret min metode til en case switch der sådan her ud:

<?php

if (!isset($_GET['i'])) { $_GET['i'] = 0; }

switch ($_GET['i']) {
    case 0:
        $IndexFeed = 'home.php';
        break;
    case 1:
        $IndexFeed = 'shownews.php';
        break;
    case 2:
        $IndexFeed = 'contact.php';
        break;
    default:
        $IndexFeed = 'home.php';
}

?>

OG efter en masse tables, tr, td og div kommer endelig
det div element som er hvor jeg vil have min side skal
skifte i.

<div class="InsideIndex">
    <?php include($IndexFeed); ?>
</div>

Dette betyder at man kun kan skrive index.php?i=0 og op til index.php?i=2, angiver man ingenting bliver man sendt til home.php og ved andre værdier end 0, 1, og 2 bliver man også sendt til home.php...

Dette må da være sikkert nok?

Intel4004
Avatar billede tbird Nybegynder
16. august 2002 - 10:46 #16
Kan man ikke også sagtens bruge

...fx.
case pics:
$IndexFeed = 'pics.php';

Jeg mener af hensyn til sikkerheden - fordi det virker da i hvert fald også.
Avatar billede tbird Nybegynder
16. august 2002 - 11:31 #17
Så dette må være nok. Jeg har som sagt lige ændret min code til en switch/case funktion - og det kører bare.

Tak for hjælpen til alle som har deltaget :o)
Avatar billede 7th Praktikant
16. august 2002 - 11:51 #18
thez : "Det var heller ikke for at dishe din code..." sådan forstod jeg det heller ikke ;) Jeg prøvede lige med et lille eksempel, men kunne ikke få implenteret nogen fil, så det lader ikke til man kan gøre sådan mere som der også stod beskrevet...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester