Gå til innhold

Hjelp med include


Anbefalte innlegg

Hei.

 

Jeg har så vidt begynt med php (og er fortsatt i nybegynnerstadiet), men er usikker på en del ting.

 

F.eks. på Neowin.net. Trykker man på en nyhet får man denne adressen:

http://www.neowin.net/comments.php?id=20571&category=main

 

AbsentVoid.com

http://www.absentvoid.com/index.php?section=about

 

 

 

Hva er det godt for? Hvordan fikser man det?

Endret av CobraM
Lenke til kommentar
Videoannonse
Annonse

dette er parametere som sendes inn til siden (som php scriptet kan benytte)

Dette er egentlig basic html, hvor man sender parametere ved å "hekte dem på" selve url'en man går til.

? idikerer at her kommer parametere.

og disse er organisert slik "variabelnavn=verdi" og flere parametere kan adskilles med & (og-tegn).

 

slik at man kan gå til siden "http://www.url.com?variabel1=navn&variabel2=adresse

så kan mottaker siden gjøre det den vil med disse parameterene, f.eks sette dem inn i en database over registrerte medlemmer.

Endret av thotta
Lenke til kommentar

prøve å forklare på en litt mer populær måte..

det som skjer er at index.php ikke inneholder noe informasjon eller tekst. selve hovedfeltet hvor innholdet kommer opp er tomt.. ?section=linker indikerer at den filen som inkluderes i tekstfeltet heter linker.php og inneholder det du har skrevet om linker..

det som er hele cluet med dette er at du trenger bare lage en side med selve designet av siden.. når innholdet skal forandres forandrer du bare på hvilken side som inkluderes..

 

håper jeg gjorde meg forsått :)

Lenke til kommentar

<?php
/*Start HTML-design her

if ($_GET['side']=="jaok") include 'jaok.txt';
else include '404.txt';

/*Avslutt HTML-design her
?>

 

Mange bruker en funksjon som heter "case", men denne gjør samme nytte tror jeg...

 

Edit:

Dette er index.php.

Du trenger egentlig ikke en egen jaok.php.

 

Kan være greit å bruke .htm fil i stedet for .txt, slik at du kan bruke HTML-tagger i den....

Endret av ZoRaC
Lenke til kommentar
Ja, takk.

 

Så jeg skal lage en side med navnet index.php. Fra denne skal jeg hente tekst fra index.txt.

 

Hvis jeg skal ha en side som heter jaok.php henter jeg bare design fra index.php, men tekst fra jaok.txt?

nå er det viktig å ikke forvirre med å dra inn en rekke andre elementer...

fra index.php kan du hente tekst fra index.txt personlig bruker jeg .php som filending på dette og, synes det er lettere å ha det samme over alt..

<?
if (isset($_GET['side'])) {
$side = "sider/".$_GET['side'].".php";
if (is_file($side)) {
  @include($side);
}
else {
@include('sider/forside.php'); //  Siden som hentes om filen ikke finnes.
}
}
else {
@include('sider/forside.php'); // Siden som hentes om ingen side er spesifisert
}
?>

koden over henter tekst fra den filen du vil og inkluderer den i index.php

det som er viktig er at du legger koden der du vil at teksten skal komme opp..

filene må også ligge i en mappe som heter "sider" dette er best av sikkerhetsmessige årsaker..

 

så kan du laste opp index.php med koden over lagt inn og f.eks. filen "om.php"

 

om du skriver inn følgende i adresselinjen "www.minside.com/min_side/index.php?side=om" vil du få opp index.php med om.php inkludert

Lenke til kommentar

Ok. Har holdt på litt og lasta ned en "guide" fra RaWeb.

 

Får det allikevel ikke til.

 

Har index.php og inc-filene ligger i mappen /inc_filer/

 

index.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Jungelen.net</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
$MenuPath = "./inc_filer/meny.inc";
include("$/inc_filer/test.inc");

$IncludeDir    = "./inc_filer";
$DefaultPath   = "./inc_filer/hoved.inc";
$FileExtension = ".inc";

if (isset($side)) {
$side        = stripslashes(strip_tags($side));
$Forbidden1  = ereg("\.\./", $side);
$Forbidden2  = ereg("/", $side);
$IncludePath = $IncludeDir . "/" . $side . $FileExtension;

 if ($Forbidden1 OR $Forbidden2) {
 echo "<h1>Advarsel</h1>\n";
 echo "<p>Forespørsler på tvers av definerte \n";
 echo "områder er ikke tillatt.</p>\n";
 }
 else {
   if (@fopen("$IncludePath", "r")) { 
   include ("$IncludePath"); 
   }
   elseif (!(@fopen("$IncludePath", "r"))) {
   echo "<h1>Server Error 404</h1>\n";
   echo "<p>Finner ikke den forespurte siden.</p>\n";
   }
 }
}
else {
include("$DefaultPath"); 
}
?>
</body>
</html>

 

Så går vi over til mappen /inc_filer/:

Her ligger det tre .inc-filer. Nemlig test.inc , hoved.inc og meny.inc

 

Når jeg åpner hjemmesiden får jeg denne meldingen:

Warning: main($/inc_filer/test.inc) [function.main]: failed to create stream: No such file or directory in /hsphere/local/home/jungelen/jungelen.net/index.php on line 11

 

Warning: main() [function.main]: Failed opening '$/inc_filer/test.inc' for inclusion (include_path='.:/usr/local/lib/php') in /hsphere/local/home/jungelen/jungelen.net/index.php on line 11

hoved

 

Som dere ser helt neserst står det hoved. Det er teksten som ligger i /inc_filer/hoved.inc

Lenke til kommentar

Hvorfor jeg bruker inc vet jeg ikke. Jeg har ikke testet scriptet ditt, Smidt. Tester det hvis jeg ikke fikser det her. Så gjennom koden jeg nettopp pasta. Den var litt gal for å si det mildt:

 

Oppdatering:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Jungelen.net</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<!--meny-->
<?php
$MenuPath = "./inc_filer/meny.inc";
include("$inc_filer");
?>
<!--/meny-->

<!--innhold-->
<?php

$IncludeDir    = "./inc_filer";
$DefaultPath   = "./inc_filer/hoved.inc";
$FileExtension = ".inc";

if (isset($side)) {
$side        = stripslashes(strip_tags($side));
$Forbidden1  = ereg("\.\./", $side);
$Forbidden2  = ereg("/", $side);
$IncludePath = $IncludeDir . "/" . $side . $FileExtension;

 if ($Forbidden1 OR $Forbidden2) {
 echo "<h1>Advarsel</h1>\n";
 echo "<p>Forespørsler på tvers av definerte \n";
 echo "områder er ikke tillatt.</p>\n";
 }
 else {
   if (@fopen("$IncludePath", "r")) { 
   include ("$IncludePath"); 
   }
   elseif (!(@fopen("$IncludePath", "r"))) {
   echo "<h1>Server Error 404</h1>\n";
   echo "<p>Finner ikke den forespurte siden.</p>\n";
   }
 }
}
else {
include("$DefaultPath"); 
}

?>
<!--/innhold-->
</body>
</html>

Lenke til kommentar
Hvorfor jeg bruker inc vet jeg ikke. Jeg har ikke testet scriptet ditt, Smidt. Tester det hvis jeg ikke fikser det her. Så gjennom koden jeg nettopp pasta. Den var litt gal for å si det mildt:

vel det bør du finne ut av, for inntil videre er all din phpkode tilgjengelig f.eks her:

http://www.jungelen.net/inc_filer/meny.inc

 

her vil kildekoden ligge, eventuelle passord du måtte ha i koden vil være åpne for hvermansen.

Endret av Torbjørn
Lenke til kommentar

Jeg tester scriptet ditt, Smidt. Det virket i grunn mer oversiktlig.

 

EDIT:

Tusen takk Smidt. Det virket. Utrolig nok. Som Rema 1000 sier: Det enkle er ofte det beste. Hadde du bodd i nærheten hadde jeg spandert en kald brus på deg :)

 

Men hvordan skal jeg sette opp linker fra en meny?

Endret av CobraM
Lenke til kommentar

legg ut en index.htm fil som det står ingen tilgang i elns? :)

skulle ønske jeg la ut scriptet til smidt, jeg bor i nærheten og en kald brus er ikke nei takk ;)

 

edit: du kan også putte dette i toppen på alle sidene som ligger i mappa

if (!eregi("index.php", $_SERVER['PHP_SELF'])) {
   die ("Ingen tilgang");
}

hvis du bruker index.php? og ikke f.eks hovedside.php?

Endret av LoS
Lenke til kommentar
Jeg tester scriptet ditt, Smidt. Det virket i grunn mer oversiktlig.

 

EDIT:

Tusen takk Smidt. Det virket. Utrolig nok. Som Rema 1000 sier: Det enkle er ofte det beste. Hadde du bodd i nærheten hadde jeg spandert en kald brus på deg :)

 

Men hvordan skal jeg sette opp linker fra en meny?

ser ut som om du fikk til å sette opp linker i em meny, hvis ikke er det bare å spørre.

det har ikke noe å si at fremede har tilgang til mappen med sidene i.. grunnen til at vi legger sidene i en egen mappe er at da er det vanskeligere for hackere å kjøre eksterne script. er egentlig ikke så veldig viktig om du bare skal ha en liten personlig hjemmeside..

hadde forresten et lite eksempel på lur du kan jo ta en titt kanskje det hjelper deg.

http://predicted.net/php/include_test/

Lenke til kommentar

Jeg forklarte meg sikkert litt dårlig, for det jeg mente var:

 

hjemmeside.png

 

Jeg skulle hatt en egen php-fil hvor jeg henter linkene til menyen fra. Så derfor lurte jeg på hvordan man fikser det?

 

Jeg er ganske dårlig til å forklare, men jeg håper du skjønner.

Lenke til kommentar

aha, vel, jeg liker å bruke functions til slikt :)

Lag en fil som heter, ja til eksempel "functions.php"

inni den kan du skrive:

function meny(){
echo '<a href="#>link>link></a><a href="#>link>link></a><a href="#>link>link></a><a href="#>link>link></a>';
}

deretter, kan du legge til

include("functions.php");

i index.php fila.

Deretter skrive:

meny();

på det stedet du ønsker å ha menyen din i filene dine :)

 

edit: syns det ble litt rotete forklart, men du får prøve deg frem litt, så skjønner du ;)

Endret av LoS
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...