Avatar billede MSR Juniormester
18. november 2011 - 15:26 Der er 10 kommentarer og
1 løsning

include i php5 - afvikling af filer der skal inkluderes!

Hej jeg prøver her igen at spørge om det er muligt at lave includes i php5 som det var i php4.
Jeg har problemer i min menu som følger:

index.php
<?php include("http://www.sidesideside.dk/sidemenu.php"); ?>

sidemenu.php
<?php
if($session->logged_in)   
    { bla bla bla
}

?>

hvis jeg derimod skriver selve koden fra sidemenu.php ind i hovedsiden, virker alt fint. Det er dog uholdbart på en menu da jeg så skal ændre mange mange sider hver gang jeg skal opdatere.

Siden stopper bare og selvom jeg har error_reporting_all får jeg hverken fejl eller kode ud af det. bare ingenting!
jeg har spurgt om dette før men de svar jeg fik fik mig ikke i nærheden af et svar.

på forhånd tak
Magnus
Avatar billede MSR Juniormester
18. november 2011 - 15:27 #1
jeg glemte at sidemenu.php starter som følgende:

<?php
session_start();
include('http://www.sidesideside.dk/login/include/session.php');
error_reporting (E_ALL);
?>
Avatar billede olebole Juniormester
18. november 2011 - 19:34 #2
<ole>

Det kan jeg ikke tro, du har fået til at virke under PHP4  =)


index.php
<?php include($_SERVER['DOCUMENT_ROOT'].'sti/til/fil.php') ?>



/mvh
</bole>
Avatar billede MSR Juniormester
18. november 2011 - 20:05 #3
jeg har helt aldrig aldrig fået lavet mig et dokument_root så jeg plejer at bruge ikke absolutte stier. Det er nok lidt dårlig stil men ikke fejlen her. selv <?php include("/sidemenu.php"); ?> virker ikke
Avatar billede olebole Juniormester
18. november 2011 - 20:12 #4
Hvad betyder det, at det 'ikke virker'? Bliver dokumentet inkluderet, men dets kode ikke afviklet - eller bliver dokumentet ikke fundet - eller ...?
Avatar billede MSR Juniormester
18. november 2011 - 20:23 #5
undskyld. Det er naturligvis svært at gætte. koden stopper bare som om den fejler i første linie.
Det sidste jeg kan læse i kildekoden er linien lige inden include... men jeg får ingen fejlkode.
og resten af siden bliver ikke skrevet færdigt.

Er det udførligt nok?

Magnus
Avatar billede olebole Juniormester
18. november 2011 - 20:39 #6
Jeg ved ikke, hvorfor den ikke bliver skrevet ud, men det tyder på din session_start udløser en "Headers already sent" fejl. Det kan skyldes, du har skrevet noget ud til browseren på det tidspunkt, hvor session_start bliver kaldt.

Det kan være noget HTML, der er skrevet ud til siden. Men det kan også være en tom linje eller bare et mellemrum før et <?php tag - både i hoveddokumentet eller i det inkluderede.

Endelig kan det udløses, hvis dine dokumenter er gemt som UTF-8 med BOM.

Da du nævner, der er tale om en menu, kunne jeg umiddelbart forestille mig, du allerede har skrevet en masse HTML ud, når du inkluderer. Det kan du fint - men du kan ikke kalde session_start - eller andet, der har med HTTP headeren at gøre.
Avatar billede MSR Juniormester
20. november 2011 - 21:52 #7
her kommer koden så kan du selv følge med:

index.php -->
<?php
session_start();
include("include/session.php");
error_reporting(E_ALL);
?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Herfølgespejdernes hjemmeside</title><link rel="stylesheet" type="text/css" href="http://www.herfoelgespejderne.dk/herfoelgespejder.css">
</head>

<body>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><? include("http://www.herfoelgespejderne.dk/menu.html"); ?></td></tr>
<tr height="500"><td width="150" valign="top">
<?php include "http://www.herfoelgespejderne.dk/sidemenu.php"; ?>
</td><td valign="top">

resten af siden..... (og slut)

sidemenu.php-->
<ul class='sidemenu'>
<li><a href="http://herfoelgespejderne.dk/" title="Tilbage til forsiden">Forsiden</a></li>
<?php
if($session->logged_in)   
    {
    echo "<li><a href='http://www.dds.dk/traening' target='_blank' title='Skal du ikke snart på kursus?'>DDS Kursus</a></li>
    <li><a href='http://www.dds.dk/blaatmedlem' target='_blank' title='DDS´ medlemssystem'>Blåt medlem</a></li>
    <li><a href='http://dds.dk/find-blanketter' target='_blank' title='DDS officielle blanketter'>DDS blanketter</a></li>
    <li><a href='http://herfoelgespejderne.dk/login' title='Tilbage til login forsiden'>Login siden</a></li>
    <li><a href='http://herfoelgespejderne.dk/login/info.php?user=$session->username'>Din konto</a></li>
    <li style='font-size:11px; text-align:center; color:#FD8079'>Bruger: " . $session->username . "</li>
    <li style='background-color:#FD8079'><a href='http://herfoelgespejderne.dk/login/process.php'>Logout</a></li>";
};
  if($session->isAdmin()){
      echo "<li style='background-color:#53A600'><a href='http://herfoelgespejderne.dk/login/admin/admin.php'>Admin Center</a></li>
      <li style='background-color:#53A600'><a href='http://herfoelgespejderne.dk/login/opret_bruger.php'>Opret bruger</a></li>
      <li style='background-color:#53A600'><a href='http://herfoelgespejderne.dk/login/admin/adminprocess.php'>Logout</a></li>";
  }
else
    {
    echo "<li><a href='http://herfoelgespejderne.dk/login' title='Login'>Login</a></li>";
};
?>
</ul>

Det virker som sagt fint hvis det er direkte i koden men ikke som includerede filer. jeg ved ikke om problemet måske er at jeg includerer absolutte filer altså http://www.bla bla bla.dk/fil.php kan det være det? så er løsningen jo bare at jeg tager mig sammen og får lavet det dokument_root

Magnus
Avatar billede MSR Juniormester
20. november 2011 - 21:57 #8
pis! det var sgu løsningen. jeg ændrede lige stien og så kører det. Det er dælme en dum fejl. hvordan får jeg så lavet det root der? og et det så universielt? Smid mig et svar, så får du point og tak for hjælpen...

Magnus
Avatar billede MSR Juniormester
20. november 2011 - 22:17 #9
jeg holder bare op med at spørge nu. har selv luret det.
Vil du have point?

og mange tak for hjælpen. Det er mange timers undren der endelig er løst nu!

Magnus
Avatar billede olebole Juniormester
21. november 2011 - 15:08 #10
Et PHP-dokument, der inkluderes via HTTP, vil serveren opfatte som liggende på en fremmed server. Derfor vil PHP kun hente 'den fremmede' fils evt. output - fuldstændig ligesom en browser ville gøre det. De to dokumenter kan derimod ikke gøre brug af hinandens variabler og funktioner  *o)

Ellers tak, jeg samler ikke point. Læg selv et svar og accepter det, så tråden lukkes  =)
Avatar billede MSR Juniormester
21. november 2011 - 17:15 #11
Men mange tak skal du have. Det er pissegodt endelig at komme videre med dette dumme problem. Alle mine sider bliver nu opdateret for korrekte stier.

Tak
Magnus
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