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] server krijgt van zichzelf een 401

None
11 antwoorden
  • hoi ik maak een eigen login scriptje, een pagina die beveiligd wordt krijgt
    [code:1:bd444c5342]
    require "login.php";
    [/code:1:bd444c5342]
    login.php vraagt dan een uname en ww en checkt die. (tot zover gaat het goed)
    dan gaat ie kijken naar welke pagina er is gevraagd en voegt hij die in (het require gedeelte slaat hij over)
    [code:1:bd444c5342]
    function getdoc(){
    print $_SERVER['PHP_SELF'];
    $doc = strstr($_SERVER['PHP_SELF'], "/");
    $file = file("http://server$doc");
    for($i=4;$i<count($file);$i++){
    print $file;
    }
    exit;
    }
    [/code:1:bd444c5342]
    maar als ik heb ingelogd, geeft hij de volgende fout:

    [b:bd444c5342]Warning:[/b:bd444c5342] file(http://server/g/zon.php): failed to open stream: HTTP request failed! HTTP/1.1 401 Authorization Required in c:\server\map f\webserver\login.php on line 31

    hij moet dus blijkbaar ook bij zichzelf inloggen. :-?
    moet ik iets veranderen in de php instellingen? en wat?
  • Vraagje: waarom voeg je een script in ([i:9d62e167b1]getdoc()[/i:9d62e167b1]) terwijl je deze in eerste instantie al aangeroepen hebt?

    M.a.w. het zou voldoende moeten zijn om het volgende te doen:
    [code:1:9d62e167b1]
    - voeg login.php toe aan een script wat gecontroleerd moet worden
    - controleer in login.php of de gebruiker ingelogd is
    - zo ja: ga verder
    - zo nee: stop executie van script
    [/code:1:9d62e167b1]
    Aanvullend bij de laatste stap zou je dan nog de credentials van de gebruiker kunnen vragen (loginschermpje).
  • ben ik dan ook van mijn 401 probleem af?

    en nog een vraagje dan: hoe kan je ervoor zorgen dat hij zon.php verder gaat uitvoeren? hij stopt er namelijk mee na login.php
  • [quote:95327929a7="supergj"]ben ik dan ook van mijn 401 probleem af?[/quote:95327929a7]
    Dat weet ik niet, ik kan het niet voor je testen.
    [quote:95327929a7="supergj"]en nog een vraagje dan: hoe kan je ervoor zorgen dat hij zon.php verder gaat uitvoeren? hij stopt er namelijk mee na login.php[/quote:95327929a7]
    Als een script geen exit() of redirect (of iets dergelijks) tegenkomt dan moet deze gewoon doorgaan. Kijk je code dus even na op dit soort commando's. Om te debuggen waar je ergens zit in de code kan je op strategische plekken even een [code:1:95327929a7]echo "U bevindt zich hier";[/code:1:95327929a7]toevoegen.
  • Ik controleer meestal of de session aanwezig is.

    - Als session niet aanwezig door sturen naar login scherm.
    - Als session wel aanwezig is gewoon doorgaan met het parsen van de opgevraagde pagina.
  • [quote:2dbbd8dfd5="InZane"]Ik controleer meestal of de session aanwezig is. [/quote:2dbbd8dfd5]Veilig is anders… Als je toch op een session controleert, stop er dan een gebruikersnaam/wachtwoord(MD5)-combinatie in die je kan controleren. Een session faken is nl niet zo moeilijk.

    - Bas
  • die functie (getdoc()) waar eerst stond dat ie de opgevraagde pagina ging printen, heb ik leeg gemaakt. maar hij gaat nu toch niet verder met zon.php
    als je succesvol ben ingelogd, komt hij nergens meer exit tegen. als ik in getdoc() gewoon alleen zet [code:1:f97ebf1841]print "je ben ingelogd"; [/code:1:f97ebf1841] gaat hij niet verder met zon.php (hij print wel je ben ingelogd)
    is er niet een manier om te verwijzen naar de rest van het script in zon.php?
  • [quote:d4fb644e44="supergj"]is er niet een manier om te verwijzen naar de rest van het script in zon.php?[/quote:d4fb644e44]
    Dat is je probleem cq. oplossing niet. Verder gaan met de rest van je script gebeurd automatisch (return uit een functie) als de flow van je script goed is. Er gaat dus nog steeds ergens iets fout en het lijkt me slimmer om daar op te focussen in plaats van om het probleem heen te werken.

    Een versimpeld voorbeeldje (ongetest):

    [b:d4fb644e44]login.php[/b:d4fb644e44]
    [code:1:d4fb644e44]
    <?php
    /* bepalen of iemand ingelogd is */
    $ingelogd = true; // dit is even de versimpelde check ;)

    if ($ingelogd)
    {
    /* print boodschap */
    echo "<p>welkom</p>";
    }
    else
    {
    /* print error en stop verwerking van het script */
    echo "<p>niet ingelogd</p>";
    exit;
    }
    ?>
    [/code:1:d4fb644e44]

    [b:d4fb644e44]script met login check[/b:d4fb644e44]
    [code:1:d4fb644e44]
    <?php
    require_once("login.php");

    echo "<p>hier staat de rest van je pagina</p>";
    ?>
    [/code:1:d4fb644e44]
  • [quote:c9ef4ae492="BasHamar"][quote:c9ef4ae492="InZane"]Ik controleer meestal of de session aanwezig is. [/quote:c9ef4ae492]Veilig is anders… Als je toch op een session controleert, stop er dan een gebruikersnaam/wachtwoord(MD5)-combinatie in die je kan controleren. Een session faken is nl niet zo moeilijk.

    - Bas[/quote:c9ef4ae492]

    Uiteraard worden user en pass gecontroleerd. Lijkt me niet meer dan logisch ;)
  • annie, je bent geweldig!! :)
    ik heb toch een exit; over het hoofd gezien. ik had namelijk na het uitvoeren van getdoc (die overigens alleen "ingelogd" liet zien) een exit; neergezet. :oops:
    je ziet zo iets over het hoofd

    het probleem is dus opgelost, bedankt!
  • [quote:416f55d9a6="supergj"]ik heb toch een exit; over het hoofd gezien.[/quote:416f55d9a6]Een tip voor de volgende keer dat je gaat debuggen:

    In vrijwel elke zichzelf respecterende tekstverwerker zit een zoekfunctie, meestal onder CTRL-F. Veel handiger dan zelf regel voor regel je code doorlopen.

    Doe hier je voordeel mee!

    ;) :D

    - Bas

Beantwoord deze vraag

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