[PHP] inclusion met PHP_SELF

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor onze webshite www.columnsonline.tk ben ik code aan het schrijven om emoticons bij je geposte bericht te kunnen plaatsen. Hierbij maak ik gebruik van een include, omdat ik het script meerdere keren op andere plekken gebruik:

include("includes/emoticon_insert.php?insert_into=column");

Dit werkte niet en ik kwam erachter dat je de hele URL er ook voor moet zetten omdat PHP anders naar het bestand includes/emoticon_insert.php?insert_into=column gaat zoeken:

include("http://localhost/columnsonline/includes/emoticon_insert.php?insert_into=column");

Dit werkt, maar nu wil ik dit dynamisch maken d.m.v. $_SERVER['PHP_SELF']:

include(".$_SERVER['PHP_SELF'].includes/emoticon_insert.php?insert_into=column");

Alleen ik krijg het voor geen mogelijkheid werkende |:( !! Alle combinaties al geprobeerd en op php.net gezocht, zonder resultaat... Ik krijg ook geen foutmeldingen, ookal staat error_reporting op E_ALL. De hele pagina wordt gewoon niet geladen. Weet iemand hoe ik dit op kan lossen???

Acties:
  • 0 Henk 'm!

  • Billie
  • Registratie: Januari 2003
  • Laatst online: 16-09 20:27
$_SERVER['PHP_SELF'] geeft toch alleen filename.php? :?

Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

$_SERVER['PHP_SELF'] geeft idd "/filename.php" terug. dynamisch maken? je kunt gewoon een include directory instellen in php.ini, waar PHP automatisch in zoekt als je een file wilt includen. hoef je nooit een path op te geven.

[ Voor 14% gewijzigd door X-Lars op 22-02-2004 18:22 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Als je geen foutmelding krijgt en wel error_reporting op E_ALL hebt staan kan het misschien zijn dat display_errors in php.ini niet aan staat. Controleer dit even mbv phpinfo() en verander dit zo nodig even als je zelf bij php.ini kan, zo niet probeer het dan met ini_set aan te zetten... ;)

Acties:
  • 0 Henk 'm!

  • Vae Victis
  • Registratie: April 2001
  • Laatst online: 07-09 06:15

Vae Victis

Dark Lord of the Sith

include("http://localhost/columnsonline/includes/emoticon_insert.php?insert_into=column");
Dit werkt, maar nu wil ik dit dynamisch maken d.m.v. $_SERVER['PHP_SELF']:
include(".$_SERVER['PHP_SELF'].includes/emoticon_insert.php?insert_into=column");
Alleen ik krijg het voor geen mogelijkheid werkende..
PHP:
1
include("http://localhost/columnsonline/includes".$_SERVER['PHP_SELF']."?insert_into=column");

Zoiets?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nee zo bedoel ik het niet, Vae Victis.

Het gaat erom dat het script op verschillende locaties draait (soms thuis om te testen, soms op de server, soms bij een vriend van me blabla) en dan wil ik niet de hele tijd die include function gaan veranderen, dit moet hij gewoon zelf doen.

:(

Acties:
  • 0 Henk 'm!

Verwijderd

bij include hoef je ook niet het hele pad op te geven..! Dit kan wel, maar doe je dit niet dan zoekt php vanuit de locatie waar het script wordt gedraaid..

Acties:
  • 0 Henk 'm!

  • oscarvdb
  • Registratie: December 2001
  • Laatst online: 20-05 09:45

oscarvdb

and like that...

PHP:
1
include($_SERVER['DOCUMENT_ROOT']."/columnsonline/includes/emoticon_insert.php?insert_into=column");


Zoiets bedoel je?
'DOCUMENT_ROOT'
The document root directory under which the current script is executing, as defined in the server's configuration file.

[ Voor 10% gewijzigd door oscarvdb op 22-02-2004 20:51 . Reden: klein foutje ]

... he's gone.


Acties:
  • 0 Henk 'm!

  • pjonk
  • Registratie: November 2000
  • Laatst online: 20-09 21:53
Verwijderd schreef op 22 februari 2004 @ 18:15:
include("includes/emoticon_insert.php?insert_into=column");

Dit werkte niet en ik kwam erachter dat je de hele URL er ook voor moet zetten omdat PHP anders naar het bestand includes/emoticon_insert.php?insert_into=column gaat zoeken:
De vraag is of het noodzakelijk is om de GET variabele 'insert_into=column' mee te geven aan het script. Kun je het niet anders oplossen zonder GET variabelen mee te geven? Dan hoef je ook geen URL include met http:// te gebruiken.

Draait de emoticon_insert.php include op dezelfde server of op een andere server? Dat is mij nog niet helemaal duidelijk uit je verhaal.

It’s nice to be important but it’s more important to be nice


Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 22:25

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
.

[ Voor 99% gewijzigd door We Are Borg op 22-02-2004 22:13 ]


Acties:
  • 0 Henk 'm!

  • oscarvdb
  • Registratie: December 2001
  • Laatst online: 20-05 09:45

oscarvdb

and like that...

Lekkere toevoeging. Je waardeert je postcount wel ofniet?

Ik zou het trouwens anders aanpakken. Je include gewoon boven elke pagina includes.php (oid) en definieert daar de functies dus:
PHP:
1
2
3
4
function insertSmilieColumn()
   {
   // hier je code dus...
   }


En dan in je bestand gewoon de functie oproepen:
PHP:
1
insertSmilieColumn();


Is gewoon wat netter en dan heb je een centrale plaats waar je toevoegingen makkelijk kan maken; namelijk de includes.php.

... he's gone.


Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 01:08
Het moet sowiezo kunnen, en als het niet netjes kan kan het wel met eval() :P.

Maar de code die je in het eerste bericht hebt staan klopt al niet. Verder kun je inderdaad $_SERVER['DOCUMENT_ROOT'] en $_SERVER['REQUEST_URI'] gebruiken.

Acties:
  • 0 Henk 'm!

  • wasco
  • Registratie: April 2003
  • Laatst online: 20-09 12:25

wasco

brightest crayon in the box

ik denk eigenlijk dat de TS __FILE__ (http://be2.php.net/constants) in combinatie met dirname (http://be2.php.net/dirname) zoekt. Volgens mij staat bij de commentaren daar wel wat voorbeelden van wat je zoekt.

wasco [the brightest crayon in the box]


Acties:
  • 0 Henk 'm!

Verwijderd

Waarom wil je persee het bestand via het http protocol inladen? Het bestand wat je nu van de localhost laadt is al door de server geparsed, daarvoor moet de server dus een extra apache thread starten. Als er dus 50 smilies zijn in een pagina heb je daarvoor dus 50 apache threads voor nodig gehad, oftewel smerige code!

Maak zoals eerder aangegeven een functie:

PHP:
1
2
3
4
5
6
function InsertSmilie($Type)
{
    return '[img]"media/'[/img]';
}

echo InsertSmilie("Column");


Deze functie kan je eventueel in een bestand zetten dat je include in de pagina's waar je het nodig hebt.
Pagina: 1