Avatar billede funkylezzz Praktikant
04. maj 2010 - 21:36 Der er 29 kommentarer og
1 løsning

Nu igen tænker INCLUDE

Hej jeg er ved at rive patterne af mig selv.
Jeg skal include /poll/poll.php?id=4 på min forside men jeg kan ikke få det til at virke.

Jeg skriver:

<?php
include('/poll/poll.php?id=4');
?>

Hvad gør jeg forkert, har brugt hele dagen på det nu.
Avatar billede funkylezzz Praktikant
04. maj 2010 - 21:41 #1
Mit webhotel er one.com
Kan det have noget med dem og gøre?
Avatar billede public2 Nybegynder
04. maj 2010 - 22:26 #2
Jeg er ikke helt sikker på mit svar her, da jeg aldrig har gjort som du gør, men jeg tror ikke at du kan include en dynamisk url på den måde.

Så vidt jeg kan læse mig til på PHP.net og i deres manual (ref: http://php.net/manual/en/function.include.php) så kan du ikke include relativt på den måde, men skal include gennem http.

Så i stedet for:
include('/poll/poll.php?id=4');

så skal du gøre det via HTTP sådan her:

include('http://www.yourdomain.dk/poll/poll.php?id=4');

Men ellers, hvorfor så ikke lade poll.php klare arbejdet? Bare include poll.php og i poll.php så lader du den hente det korrekte id ind og så viser den?

Som sagt, jeg er ikke helt sikker i min sag, men synes selv at det virker lidt ulogisk at kunne include en fil der hedder "poll.php?id=4" som jo nok er det PHP leder efter i dit tilfælde.
Avatar billede public2 Nybegynder
04. maj 2010 - 22:29 #3
Hov, glemte lige at sige noget...

Ellers, så kan du jo prøve dig med Apaches mod_rewrite som kan omskrive din URLer til en mere læslig (og SEO venlig) query, som du så måske kan include, f.eks. ved at lade den være poll-nummer-4.htm eller sådan?

Du kan finde en masse guides, tutorials og artikler om mod_rewrite ved at søge på google.
Avatar billede funkylezzz Praktikant
04. maj 2010 - 22:54 #4
Det virker ikke.

Skal lige sige jeg ikke er så erfaren og bliver helt forvirret når jeg læser om mod_rewrite
Avatar billede public2 Nybegynder
04. maj 2010 - 23:02 #5
Det nemmeste for dig er nok så, at lade poll.php gøre dit arbejde og så bare include / require den.

Hvis du laver et forum, for eksempel, vil du gøre det på samme måde, hvor du inkluderer en fil som thread.php og så lade den generere indholdet dynamisk ud fra et dynamisk id (eller andet).

Det samme kan du med forholdsvis nemhed gøre med din poll.php.
Så vidt jeg er orienteret, så vil PHP parseren lede efter en fil med navnet "poll.php?id=4" og da du ikke har den vil du få en fejl eller bare intet vil blive vist.

Det er i hvert fald nemmere for dig end mod_rewrite hvor du "omskriver" URL'en.

Hvordan du vil lade poll.php klare arbejdet kan gøres på mange forskellige måder, men ét forslag kan være at videregive id'et til den, som den så bruger til at hente de korrekte poll-data fra databasen / flat-file.
Avatar billede funkylezzz Praktikant
04. maj 2010 - 23:09 #6
Jeg har prøvet det du siger men den kommer med en fejl meddelse.

Den skriver:

Empty or wrong id!
Avatar billede public2 Nybegynder
04. maj 2010 - 23:23 #7
Hvad har du prøvet? En HTTP include? Ja som sagt, jeg har aldrig selv forsøgt mig med det, men fandt en reference til det via php.net manualen.

Jeg har været lidt rundt på google og søgt om dit problem og jeg får et meget enstemmigt resultat, at det du ønsker enten ikke kan lade sig gøre eller er yderst frarådet på grund af f.eks. Injections og andre sikkerhedsmæssige problemer.
Avatar billede funkylezzz Praktikant
04. maj 2010 - 23:28 #8
Ja har prøvet http include og køre en ren poll.php
Avatar billede public2 Nybegynder
04. maj 2010 - 23:49 #9
Du behøver ikke en http include når du bare includer din poll.php og faktisk vil jeg fraråde dig at lave en HTTP include (det giver større chance for broken-links).

Men hvis du får problemer med at include din poll.php, så er det højst sandsynligt din poll.php som skal ændres eller laves om.

Hvad er det du prøver at udskrive i din poll.php siden siger empty or wrong id?

Hvordan du henter indholdet afhænger jo en hel del af din kode og hvordan du skruer den sammen, men alt efter hvordan så kan du enten smide den i en variable, i en URL query og hente den med $_GET eller hvis det er en form kan du sende den videre i et f.eks. hidden field og bruge $_POST til at samle den op.

Mulighederne er mange, men det afhænger meget af situationen hvordan det skal gøres og hvilken metode du har det bedst med.
Avatar billede funkylezzz Praktikant
04. maj 2010 - 23:58 #10
Poll.php ser så ledes ud:

<?php

include(realpath(dirname(__FILE__)) . '/config.php');
include_once(APP_FOLDER . 'content/PublicPollsContent.php');

/* Check if apoll is installed */
if (!Various::checkIfInstalled()){
    die("Apoll is not installed, please go to <a href='" . WEB_URL . "install/'>install folder</a> to install apoll.");
}

$pollClass = new PublicPollsContent();
$poll = $pollClass->viewDetails();
$settings = various::getMainSetings();
$smarty->assign("voteText", $settings['voteText']);

if (empty($poll)) {
    die("Empty or wrong id!");
}

$cookie = isset($_COOKIE[$poll['identificator']]) ? $_COOKIE[$poll['identificator']] : 0;
$ipAddress = $_SERVER['REMOTE_ADDR'];
$show = 0;

switch ($settings['blockBy']) {
    case 0:
        if (!empty($cookie)) {
            $show = 1;
        }
        break;
    case 1:
        if ($pollClass->checkIfUserVoteByIp($poll['pollID'], $ipAddress) != 0) {
            $show = 1;
        }
        break;
    case 2:
        default:
        if ($pollClass->checkIfUserVoteByIp($poll['pollID'], $ipAddress) != 0 || !empty($cookie)) {
            $show = 1;
        }
        break;
}

switch ($show) {
    case 0:
        default:
        $smarty->display("vote.tpl");
        break;
    case 1:
        $smarty->display("results.tpl");
        break;
}

?>
Avatar billede showsource Seniormester
05. maj 2010 - 01:48 #11
Du starter stien i include med en skråstreg, d.v.s. php kikker fra starten af harddisk ( / ) efter et dir som hedder "poll"

Dernæst, så kikker php efter en fil som rent faktisk hedder
"poll.php?id=4" og ikke blot poll.php

For at bruge dit id i poll.php, kan du definere den først.

<?php

$idref = 4;

include('poll/poll.php');
?>


Evt. include($_SERVER['DOCUMENT_ROOT'].'/poll/poll.php');
Så behøver du ikke tænke så meget på hvor fil ligger som includer poll.php
Bedre endnu, er nok at definere harddisk sti til dit webhotel
Avatar billede funkylezzz Praktikant
05. maj 2010 - 07:31 #12
Virker ikke.
Den skriver stadigvæk det samme.
Avatar billede showsource Seniormester
05. maj 2010 - 08:00 #13
Skriver hvad ?

Anyway:
<?php
$pollfile = $_SERVER["DOCUMENT_ROOT"]."/poll/poll.php";

if(!is_file($pollfile)) {

echo"Fil ikke fundet!";

}else{

$idref = 4;

include($pollfile);

}
?>

I poll.php skal du så gøre brug af $idref

Alternativt lave en iframe i stedet for include.
Der kan du netop sætte en get variabel som poll.php kan bruge
Avatar billede funkylezzz Praktikant
07. maj 2010 - 14:42 #14
Jeg får denne fejl:

Warning: include() [function.include]: Failed opening 'http://female6.com/poll/poll.php?id=4' for inclusion (include_path='.:/usr/share/php') in /customers/female6.com/female6.com/httpd.www/poll/index1.php on line 98
Avatar billede Slettet bruger
07. maj 2010 - 15:12 #15
Hvad med

<?php require('/poll/poll.php?id=4'); ?>
Avatar billede funkylezzz Praktikant
07. maj 2010 - 15:24 #16
stadigvæk samme problem
Avatar billede funkylezzz Praktikant
07. maj 2010 - 15:35 #17
Det er underligt, for jeg kan godt include htm filer, men det er et problem, når jeg prøver med php filer.
Avatar billede public2 Nybegynder
07. maj 2010 - 20:01 #18
Der er ingen forskel på HTML og PHP filer, hverken med include, require eller require_once. Hvis du kan include en html fil og den bliver vist korrekt, så må det være noget med den PHP fil du prøver at includere der gør at der kommer fejl.

Hvis du f.eks. laver en tom PHP fil og bare skriver
<?php
echo "Tester";
?>

og includer den, så burde den gerne vise teksten.
Avatar billede funkylezzz Praktikant
07. maj 2010 - 20:35 #19
Det har jeg prøvet nu.
Men det virker ikke.
Avatar billede funkylezzz Praktikant
07. maj 2010 - 20:44 #20
Men underlig nok får jeg ingen warnings længere..
Nogen som har one.com som udbyder?
Avatar billede funkylezzz Praktikant
07. maj 2010 - 20:49 #21
Jo nu gør jeg... min fejl...
Nogen som kunne tænke sig at kigge....

Mit domæne +  /index1.php
Avatar billede funkylezzz Praktikant
07. maj 2010 - 21:17 #22
Jeg giver op. lukker og slukker
Avatar billede funkylezzz Praktikant
07. maj 2010 - 21:18 #23
lukker
Avatar billede public2 Nybegynder
08. maj 2010 - 13:56 #24
Hej igen,

jeg har google lidt rundt omkring one.com og du er bestemt ikke den eneste der har haft problemer med include og require funktionerne hos one.com.

Jeg har ikke brugt så meget tid på deres side, men du kan jo evt. forsøge at skrive en mail til dem og høre om der er et specielt problem eller en speciel måde at include på hos dem.

Derudover vil jeg anbefale dig at bruge require fremover. De gør det samme, forskellen er bare, at du med require får en fejlmeddelelse hvis der er problemer og det gør du ikke med include.
Avatar billede showsource Seniormester
08. maj 2010 - 14:37 #25
public2 =>
"require() is identical to include() except upon failure it will also produce a fatal E_ERROR level error. In other words, it will halt the script whereas include() only emits a warning (E_WARNING) which allows the script to continue."

http://dk.php.net/manual/en/function.require.php
Avatar billede funkylezzz Praktikant
12. maj 2010 - 10:09 #26
Jeg har lige snakket med one, og jeg er sku bare forvirret nu.
Få at vide at det  ikke er et problem med deres lange skjulte stier.
Kom endelig med kommentar.

Velkommen til One.com chatsupport. Vi gør vores bedste for at besvare dine spørgsmål hurtigt. Der kan dog opstå travlhed hos os, som beklageligvis kan forsinke vores svar.
Du chatter nu med 'Karsten'

Karsten: Hej. Hvad kan jeg hjælpe med?

Dig: god morgen

Dig: jeg har et problem med include af php filer på min side. jeg har snakket med en hel det folk på eksperten.dk om problemet og de siger at det er pga af one.dk opsætning af server.

Dig: kan du bekræft dette?

Karsten: Hvilke problemer oplever du?

Dig: jeg kan ikke include php filer

Dig: men kan godt include alm. htm filer

Karsten: Du kan også godt include php filer

Dig: Hvis du ser her kommer der fejl

Dig: http://www.female6.com/index1.php

Dig: og mange på eksperten mener at det er et generel problem med ones servere

Karsten: Øjeblik

Dig: man kan læse om dette problem i samtlige dk forumer

Dig: tak

Karsten: Den fil du prøver at inkludere findes ikke eller har en anden sti

Dig: det er det problemet er at i har nogle lange omveje som brugeren ikke er informeret om har jeg fået af vide på eksperten

Dig: de stier som jeg få i fejlmeddelsen eksistere ikke for mit vedkommene

Karsten: Det er ikke korrekt

Karsten: Såfremt du f.eks. har filen placereret på female6.com/minefiler/minfil.php - så skal din inklude blot have den adresse

Karsten: Ingen lange adresser er nødvendige.

Dig: så det bare underligt at det ikke virker uanset hvilket skript jeg bruger... Det har været et problem i alle de skripts jeg har brugt i den tid jeg har haft server hos jer.

Dig: kan du så forklare hvorfor det ikke virker?

Karsten: Sørg for at skrive den direkte sti i adressen og sørg for at filen er placerert det sted du angiver.

Dig: det har jeg nu prøvet i 3 dage men uden at det virker

Dig: du kan jo se resultatet

Karsten: Den fejl kommer som sagt fordi stien ikke er korrekt, eller fordi filen ikke eksistere

Karsten: http://female6.com/poll/test.php

Karsten: http://female6.com:/usr/share/test.php

Karsten: Det ser ud til at være de korrekte stier

Karsten: og http://female6.com/usr/share/index1.php

Dig: http://female6.com:/usr/share/test.php Denne sti eksistere overhovedet ikke på min server

Karsten: uden kolon

Dig: http://female6.com/usr/share/index1.php eksistere heller ikke

Karsten: Det gør den, du kan prøve at gå ind på http://female6.com/usr/share/index1.php

Karsten: Et eksempel på din include: <?php include('../poll/test.php'); ?>

Karsten: Den sti findes ikke, du kan ikke gå en mappe tilbage, når du i forvejen er i rodmappen

Karsten: Ændre den til <?php include('http://female6.com/poll/test.php '); ?>

Karsten: Eller <?php include('poll/test.php'); ?>

Dig: karsten prøv lige at hænge på

Dig: nu har jeg så rettet det til du sagde

Dig: så se

Dig: Jeg har efter hånden prøvet 20 forskellige råd fra eksperten.dk men uden held

Karsten: Du har et mellerum til sidst i din inklude

Karsten: Fjern det

Dig: så det fjernet men stadigvæk problem

Karsten: Øjeblik

Dig: hvis jeg omdøber den phpfil til en htmfil så virker det

Karsten: Oki, prøv i stedet med den lange sti: <?php include('/customers/female6.com/female6.com/httpd.www/poll/test.php'); ?>

Dig: nu virker det

Dig: så har eksperten jo ret i at i har nogle lange omveje eller hvad siger du?

Karsten: Prøv med følgende: <?php include('poll/test.php'); ?>

Dig: jamen det virker jo nu

Dig: eller er det for at se om det vil give problemer igen?

Karsten: Det er for at se om den ikke også virker

Dig: så den gal igen

Karsten: Nej

Karsten: Du har indsat: <?php include('/poll/test.php'); ?>

Karsten: Det skal være <?php include('poll/test.php'); ?>

Dig: min fejl

Dig: okay ja så virker

Dig: okay vent så lige

Karsten: Godt nok, du kan benytte den direkte sti f.eks. 'poll/test.php' eller den lange sti '/customers/female6.com/female6.com/httpd.www/poll/test.php'

Karsten: Begge giver samme resultat.

Dig: jeg prøver så lige med den egenlige fil som jeg skulle includere

Karsten: God ide

Dig: så den gal

Karsten: Filen rate.php prøver at tilgå rate.txt - den ser ikke ud til at findes eller også er den placeret forkert

Dig: vil det sige at jeg så skal ind og rette alle min php filer med den nye sti/omvej

Dig: /customers/female6.com/female6.com/httpd.www Kan du fortælle mig hvor den sti kommer fra?

Karsten: Ja, du skal rette dine filer så de har den korrekt sti

Karsten: Det er den egentlige serversti til roden af dit webhotel

Dig: det er jo ikke en særlig normal sto for en almindelig one bruger

Dig: så vil jeg jo få dette problem med alle php filer i fremtiden

Karsten: Nej, du kan som sagt blot benytte den korte sti

Karsten: Som eksemplet tidligere: <?php include('poll/test.php'); ?>
Dig: det godt nok noget rod
Dig: det vil jo sige at jeg skal til at kode med en sti som egenlig ikke er synlig for normal bruger

Karsten: Hvilken sti mener du det skulle være?

Dig: /customers/female6.com/female6.com/httpd.www

Karsten: Nej, benyt den korte, som jeg nu har nævnt nogle gange

Dig: jeg bliver sku godt nok helt forviret

Karsten: F.eks.: poll/test.php
Dig: men som du kan se så laver den jo stadigvæk fejl fordi den ikke kender den lange sti

Karsten: Altså for at forklare det simpelt, så er stien: /customers/female6.com/female6.com/httpd.www/poll/test.php - det samme som: poll/test.php

Karsten: Nej den gør ikke, det er fordi du giver den en forkert sti eller fordi filen ikke eksistere der hvor du siger den er.
Dig: ved du hvad jeg vil sige tak for din hjælp.. jeg vil prøve mig lidt frem igen... Jeg tror jeg er blevet lidt klogere.

Dig: må jeg bruge denne tråd på eksperten

Dig: der er mange der har problemer med dette

Karsten: Det lyder til de har givet dig en besværlig metode, derfor oplever du problemer. Det er selvfølgelig op til dig om du vil følge deres råd. Som sagt kan du sagtens benytte en ganske almindelige sti til dine filer.

Karsten: Held og lykke med det. Du er velkommen til at vende tilbage.
Avatar billede funkylezzz Praktikant
12. maj 2010 - 10:16 #27
Det er godt nok med en anden fil nu.
Men får stadigvæk fejl
Avatar billede funkylezzz Praktikant
12. maj 2010 - 10:27 #28
Nu har jeg sku fundet ud af problemet
yessssss
Avatar billede showsource Seniormester
12. maj 2010 - 10:49 #29
Og hvad var problemet ?
Avatar billede funkylezzz Praktikant
12. maj 2010 - 10:54 #30
problemet var at mine php scripts havde forkerte stier.
Havde jeg brugt scriptet fra roden af så havde det fungeret.
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