Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

$PHP_SELF werkt niet ???

None
6 antwoorden
  • Onderstaande code heb ik letterlijk uit een boek overgenomen:
    [code:1:ff8b8942b1]
    </HEAD>
    <BODY>
    <?php
    if(!IsSet($stage))
    {
    ?>
    <P>Please fill out the form below to submit your title, name and email adress.</P>
    <FORM METHOD="POST" ACTION="<?php print('$PHP_SELF')?>" >
    Title:<BR>
    <INPUT TYPE = RADIO NAME="Title" VALUE=1>Mr.<BR>
    <INPUT TYPE = RADIO NAME="Title" VALUE=2>Ms.<BR>
    Given name: <INPUT TYPE=TEXT NAME="GivenName" SIZE=25><BR>
    Family name: <INPUT TYPE=TEXT NAME="FamilyName" SIZE=25><BR>
    E-mail adress: <INPUT TYPE=TEXT NAME="Email" SIZE=25><BR>
    <INPUT TYPE=HIDDEN NAME="stage" VALUE=1>
    <INPUT TYPE=SUBMIT>
    </FORM>
    <?php
    }
    else
    {
    mysql_connect("localhost", "gebruiker", "pw") or die("failure to communicate with database");
    mysql_select_db("phpbook");
    $query = "INSERT INTO adressbook (ID, Title, GivenName, FamilyName, Email) VALUES('NULL', '$GivenName', '$FamilyName', '$Email');
    $result - mysql_query($query);
    if($result – 0)
    print("There's been a problem.");
    else
    print("Your information has been recorded.");
    }
    ?>
    </BODY>
    </HTML>
    [/code:1:ff8b8942b1]
    Wanneer ik op de submit-knop klik krijg ik een melding dat de pagina niet gevonden kan worden. Je kunt de pagina bekijken op www.capady.nl/boek355.html

    De ingevoerde gegevens voor usernaam en paswoord zijn niet correct maar dan zou ik op zijn minst de foutmelding uit het script moeten krijgen en niet de melding dat de pagina niet bestaat.
    Zelf heb ik het sterke vermoeden dat het probleem ergens bij het action deel zit van de FORM declaratie ik zi alleen even niet precies wat nu het probleem is.

    Wie kan mij vertellen waar het foutje zit ?

    Alvast bedankt,

    John
  • PHP moet door de server uitgevoerd worden. Aangezien je de pagina nu als .html opgeslagen hebt en niet als .php voert hij helemaal geen PHP uit. De action is nu "<?php print($PHP_SELF)?> in het HTML document, als PHP het nu uitgevoerd had was dat netjes de pagina zelf geweest…

    Dus ff renamen naar boek355.php en dan zou het moeten werken..
  • En dan nog wat, je kunt beter deze variabele gebruiken:
    $_SERVER['PHP_SELF']
  • Oke, ik geloof dat ik het nog niet helemaal onder de knie heb :-(

    Nadat ik het bestand had gerenamend naar een PHP bestand werkte het inderdaad wel, maar ik zou zoiets eigenlijk heel graag zelf willen zien ipv dat jullie het voor me moeten zien.

    Door de HTML statements waar de listing mee begon ben ik er eigenlijk voetstoots van uit gegaan dat het een HTML listing was maar hoe zie je nu dat onderscheid ?
    Wie kan mij dat duidelijk uitleggen ?

    Alvast bedankt,

    John
  • Zoals ik in mijn post schreef wordt PHP door de server uitgevoerd. PHP maakt als het ware zelf HTML pagina's. Dat voert je eigen computer niet uit..

    Het flexibele van PHP is dat je het gewoon in HTML kunt invoeren en makkelijk kunt switchen. Net zoals in de code die jij gebruikt.
    Als je dus <? … ?> of <?php … ?> in je pagina hebt staan moet de pagina als .php opgeslagen zijn, wil PHP wat kunnen doen. Dat komt omdat de extensie .php ervoor zorgt dat de webserver het bestand als een php bestand ziet en het dus door de php parser haalt (dat zorgt ervoor dat alles afgehandeld wordt..). Zolang je dus nog .html gebruikt wordt het bestand gelijk verstuurd, zonder tussenkomst van die parser..

    In je pagina wordt alles tussen de PHP tags dus uitgevoerd door PHP en wordt er gezorgd dat de aangepaste code weer naar de browser verstuurd wordt.

    Ik hoop dat het zo duideijker voor je is..
  • Juist, enehh als je het nog perfecter wilt doen, moet je de HTML attributen ff allemaal tussen aanhalingstekens zetten.

    Maar snap je het nu een beetje? Het principe van Server-side scripts?

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.