WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   http authentication (http://www.wcm.at/forum/showthread.php?t=128044)

heli2sky 11.03.2004 14:17

http authentication
 
http://www.php.net/manual/en/features.http-auth.php

und wie mach ich das jetzt, dass er zugriff gewährt, wenn ich den richtigen user und passwort angegeben habe???

[edit]
sorry... geht schon!

hatte das gestern probiert, da is es nicht gegangen, jetzt gehts:

PHP-Code:

<?php
//http://at.php.net/manual/en/features.http-auth.php
function login_error()
{
 echo 
"error - login process failed.";
}

if (!isset(
$PHP_AUTH_USER))
{
 
header("WWW-Authenticate: Basic realm=\"Mosaic Authorization process\"");
 
header("HTTP/1.0 401 Unauthorized");

 
//Result if user hits cancel button
 
login_error();
}
else
{

 
//check the login and password
 
if($_SERVER['PHP_AUTH_USER']=="user" && md5($_SERVER['PHP_AUTH_PW'])=="pw(md5-verschlüsselt)")
 {
  
//User is logged
    
echo "logged in...";
 }
 else
 {
  
//This re-asks three times the login and password.
  
header"WWW-Authenticate: Basic realm=\"Test Authentication System\"");
  
header("HTTP/1.0 401 Unauthorized");

  
//Result if user does not give good login and pass
  
login_error();
 }

?>


heli2sky 11.03.2004 15:31

hmmm

andere frage: kann ich irgendwie einen gesamten ordner so schützen? vielleicht mit einem standard-auth-file das von jeder seite includet wird? mein webspace lässt nämlich keine .htaccess zu :(

SNo0py 13.03.2004 12:09

Mittes include_once('path/to/auth.inc'); in jedem PHP-File: ja.
Für Text-Files oder Bilder: nein.

heli2sky 13.03.2004 18:40

ok ich hab das jetzt so gelöst, dass ich ein index-file hab, wo die auth geprüft wird und wenn das true ist, dann werden die diversen seiten aus einem auf dem server geschützten ordner includet!

was aber nicht funktioniert: ich kann nicht mehreren usern den zugriff erlauben :(

PHP-Code:

 $lines file("../mysql/usertable.php");
 foreach(
$lines as $line)
     
$users[] = explode(":",$line); // ein user ist in eine zeile so gespeichert: user:40389dkjlksad843lkjsad984

 
$permission=false;
 foreach(
$users as $user) {
     if(
$_SERVER['PHP_AUTH_USER']==$user[0] && md5($_SERVER['PHP_AUTH_PW'])==$user[1])
         
$permission=true;
 }

 if(
$permission==true)
 {
  
//User is logged
[...] 

er nimmt immer nur den letzten user der datei an! was mach ich falsch?

jak 14.03.2004 12:13

Ich glaube der Fehler liegt in der Zeile:
PHP-Code:

foreach($lines as $line
     
$users[] = explode(":",$line); 

Ich glaube es müsste so ähnlich heißen:
PHP-Code:

$i=0;$users=null;
foreach(
$lines as $line){
     
$users[i] = explode(":",$line);
     
$i++;
    } 

Ich weiß aber nicht, ob du mit miener Version nicht Probleme mit der Arraygröße bekommen kannst.

Du weist dem Array users das Array zu, daß mit explode entsteht. Daher ist in user immer nur user und passwort gespeichert.

Jak

käptn 14.03.2004 15:34

Das Problem ist, dass jede Zeile von file() mit einem Linefeed "\n" abschließt.

~

heli2sky 14.03.2004 20:57

danke - an das hab ich nicht gedacht!

aber irgendwie gehts trotzdem nicht :( ich wollte den \n so wegbringen: ereg_replace("\n","",$line[1]);
ich hab das zum überprüfen mal so gemacht und mit echo jedes pw ausgegeben: echo ereg_replace("\n","####",$line[1]);
das sah dann ca so aus: ökajipa9osi8408094aölkdj ####öaksdjölkasjdölkoiwe ####öaksdölkasjdölkdöalk4 ####
...also dachte ich, dass da vielleicht noch ein abstand davor ist -> fehlanzeige.

ich hab das jetzt in eine DB geschrieben, da funktioniert das problemlos! ich werde es wahrscheinlich auch auf DB basis lassen, aber mich würde trotzdem interessieren, was ich falsch gemacht habe!

SNo0py 14.03.2004 21:29

Vielleicht hast du die Datei im DOS-"Modus" abgespeichert, da ist's dann ein \r\n und nicht nur ein \n...


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag