Toon posts:

[php/mysql] auth script werkt niet

Pagina: 1
Acties:
  • 46 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb het volgende AUTH scriptje.
Het script werkt niet, maar ik weet niet waarom.
Mysql doet het. Het pop-up venster komt ook in beeld.
Maar als ik inlog werkt het niet. Dat doe ik 3x
en dan krijg ik te zien dat ik geen toestemming heb.

Scripts:

config.php
PHP:
1
<? $host = "localhost"; $db = "mydb"; $user = "root"; $pass = ""; mysql_connect($host, $user, $pass); mysql_select_db($db); ?>

auth.php
PHP:
1
<? function authenticate() {     header("WWW-Authenticate: Basic realm=\"members\"");     header("HTTP/1.0 401 Unauthorized");     print("You must enter a valid login username and password         to access this resource.\n");     exit;     } if(!isset($PHP_AUTH_USER)){ authenticate(); } else { include("config.php");     $q=sprintf("SELECT Username,Password FROM members         WHERE Username='%s' AND Password='%s'",             $PHP_AUTH_USER,$PHP_AUTH_PW);     $q=mysql_query($q);     if(mysql_num_rows($q)==0){ authenticate(); } } ?>

Naar mijn idee is hier nix fout aan, maar op de een of andere
manier leest hij de username en password niet uit de mysql
database. Hoe komt het dat het niet werkt :?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 20:12
Staat track_vars aan in je php.ini ?
Anders moet je eens

$_SERVER['PHP_AUTH_USER'] proberen (en ook password).

en debug je script eens, dan zie je waar het mis gaat |:(

Verwijderd

PHP:
1
<?$SQL = "SELECT Password FROM Tabel WHERE Username='$PHP_AUTH_USER'";result = mysql_query($SQL);$tool = mysql_fetch_array($result);if($tool['Password'] != $PHP_AUTH_PW){  // zeg datie 't vaud heeft gedaan}else{  // doe watie moet doen alsie 't goed heeft gedaan}?>

Zo zou ik 't doen. (untested though)

Verwijderd

Topicstarter
Op dinsdag 07 mei 2002 13:59 schreef ddc het volgende:
Staat track_vars aan in je php.ini ?
Anders moet je eens

$_SERVER['PHP_AUTH_USER'] proberen (en ook password).

en debug je script eens, dan zie je waar het mis gaat |:(
Nou eerlijk is eerlijk. Dit is niet mijn script.
Ik ben nog niet zo bedreven in php dat ik het zelf schrijf.

Ik schrijf wel eigen php-scripts en parsers enzo.
Maar dat AUTH systeem snap ik de ballen van. Dus het is
een scriptje van een ander.

Hoop niet dat het verboden is.
Heb zelf al wel iets gedebugged.
Maar goed, niet genoeg dus :)

BTW: track_vars stond uit, heb ik nu aangezet, zonder resultaat helaas :'(

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 20:12
Is het wachtwoord in je Database niet toevallig MD5 :?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 20:12
Trouwens, met $_SERVER['PHP_AUTH_USER'] & $_SERVER['PHP_AUTH_PASSWORD'] werkt het wel denk ik, aangezien je nu die (niet-global) variabelen in een functie gebruikt >:)

Snapt u ? :o

Verwijderd

Topicstarter
Op dinsdag 07 mei 2002 14:19 schreef ddc het volgende:
Trouwens, met $_SERVER['PHP_AUTH_USER'] & $_SERVER['PHP_AUTH_PASSWORD'] werkt het wel denk ik, aangezien je nu die (niet-global) variabelen in een functie gebruikt >:)

Snapt u ? :o
Nee eigenlijk niet nee

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 20:12
Livors:
Nee eigenlijk niet nee
Nou, probeer dan eens dit:

Zet IN DIE FUNCTIE (!!) de volgende regels:

echo "test1:".$PHP_AUTH_USER;
echo "<br />test2:".$PHP_AUTH_PW;
echo "<br />test3:".$_SERVER['PHP_AUTH_USER'];
echo "<br />test4:".$_SERVER['PHP_AUTH_PW'];

:P

Verwijderd

Topicstarter
Op dinsdag 07 mei 2002 14:36 schreef ddc het volgende:

[..]

Nou, probeer dan eens dit:

Zet IN DIE FUNCTIE (!!) de volgende regels:

echo "test1:".$PHP_AUTH_USER;
echo "<br />test2:".$PHP_AUTH_PW;
echo "<br />test3:".$_SERVER['PHP_AUTH_USER'];
echo "<br />test4:".$_SERVER['PHP_AUTH_PW'];

:P
Alleen test3 en test4 hebben een waarde
En ik geloof zelfs dat ik het begin te snappen :P

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

mooi
debuggen is een leuk werkje verder :)
en kijk de volgende keer voor de grap eens naar de scopes van Variabelen ;)

Doet iets met Cloud (MS/IBM)


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

heropend zodat ddc kan replyen
dan gaat ie weer dicht

Doet iets met Cloud (MS/IBM)


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 20:12
Livors:
Alleen test3 en test4 hebben een waarde
En ik geloof zelfs dat ik het begin te snappen :P
Precies! :)
Dat komt dus omdat die test1 en test2 niet global zijn.

In een functie kun je niet variabelen zomaar aanspreken, daarvoor moeten ze global zijn. Dit doe je door
code:
1
global $variabele;

bovenaan in je functie te zetten. Dus als jij daar global $PHP_AUTH_USER; zou neerzetten, zou het ook werken, maar dat is een slordige oplossing.

Sinds php 4.1.0 kun je $_SERVER['ORIGINELE VAR'] gebruiken, en die zijn automatisch global, dus hoef je niet eerst global ervoor te zetten! :)

Ik ben blij dat je het begrijpt :). Denk dat je code nu ook beter werkt!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

done

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.