php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.07.2005, 09:05  
Gast
 
Beiträge: n/a
Standard Pear Auth_HTTP - Loginbox lässt mich nicht rein

Hallo!
Für einen Adminbereich benutzte will ich Auth_HTTP von Pear benutzen.
Ich habe das mal alles in eine Datei gepackt aber es funktioniert nicht.
Ich komm einfach nicht rein. Habe dann mal das normale Auth mit Formular getestet und da funktionierts.

Das Problem bei dem Auth Kram ist halt man kriegt halt wenig drüber raus wo es hängt.
PHP-Code:
<?php
$absolute_path 
'C:/Programme/Apache Group/Apache2/htdocs';
$project_folder 'devarea';
$project_root $absolute_path '/' $project_folder '/';
$pear $absolute_path '/' $project_folder '/pear/';
$templates_folder $absolute_path '/' $project_folder '/templates/';

error_reporting(E_ALL E_NOTICE);
$delim = (PHP_OS == "WIN32" || PHP_OS == "WINNT") ? ';':':';
ini_set('include_path'".{$delim}$pear{$delim}$project_root/include{$delim}$project_root");

require_once(
"DB.php");
require_once(
"Auth/Auth_HTTP.php");

$AuthOptions = array('dsn' => "mysql://:@localhost/devdb"// Auf meinem LOCALHOST benutzte ich keine DB Zugangspasswörter
    
'table' => "authentication"// your table name
    
'usernamecol' => "name"// the table username column
    
'passwordcol' => "pwd"// the table password column
    
'cryptType' => "md5"// password encryption type in your db
    
);
/*
function loginFunction()
{
    echo "<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
    echo "<input type=\"text\" name=\"username\">";
    echo "<input type=\"password\" name=\"password\">";
    echo "<input type=\"submit\">";
    echo "</form>";


$a = new Auth("DB", $AuthOptions, "loginFunction");
*/
$a = new Auth_HTTP("DB"$AuthOptions);

$a->setRealm('Adminarea'); // realm name 
$a->setCancelText('<h2>Error 401</h2>'); // error message if authentication fails$a->start(); // starting the authentication process
$a->start();

if (
$a->getAuth()) { // checking for autenticated user
    
echo "Hello $a->username welcome to my secret page";

?>
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.07.2005, 09:36  
Gast
 
Beiträge: n/a
Standard

Zitat:
('dsn' => "mysql://:@localhost/devdb", // Auf meinem LOCALHOST benutzte ich keine DB Zugangspasswörter
Bist Du ganz sicher, daß PEAR mit dem komischen DSN was anzufangen weiß?
 
Alt 29.07.2005, 09:57  
Gast
 
Beiträge: n/a
Standard

Oh Meikel genau der Richtige. Dein Auth Tutorial im pear forum ist echt gut.

Für die Page benutze ich Pear DB und das verbindet mit einem Array, da ich nicht so Fan von diesen dsn strings bin.

PHP-Code:
<?php

$dbUser     
'';
$dbPass     '';
$dbServer   'localhost';
$dbDatabase 'devdb';
$dbType     'mysql';

$dsn = array('username' => $dbUser,
             
'password' => $dbPass,
             
'hostspec' => $dbServer,
             
'database' => $dbDatabase,
             
'phptype' => $dbType);
$db DB::connect($dsn);

?>
Ich hab das nun mal so getestet:
PHP-Code:
<?php
$db 
DB::connect("mysql://:@localhost/devdb");
?>
Meine DB Queries funktionieren weiterhin. Ob das Pear Auth_HTTP auch so nimmt wie DB weiß ich allerdings nicht. Ist es vielleicht möglich den DSN String wie bei Pear DB in einem Array an das Auth_HTTP zu übergeben?
 
Alt 29.07.2005, 16:28  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von ex³
Oh Meikel genau der Richtige. Dein Auth Tutorial im pear forum ist echt gut.
Ich bin mittlerweile ein Abtrünniger.

Hier mal zwei Beispiele:
http://test.php-help.info/auth-4/ (PHP4)
http://test.php-help.info/auth-3/ (PHP5)

Zitat:
Für die Page benutze ich Pear DB und das verbindet mit einem Array, da ich nicht so Fan von diesen dsn strings bin.
...
Ich hab das nun mal so getestet:
PHP-Code:
<?php
$db 
DB::connect("mysql://:@localhost/devdb");
?>
Genau das gefällt mir ja nicht. In der DB DOC steht:

Zitat:
The format of the supplied DSN is in its fullest form: phptype(dbsyntax)://usernameassword@protocol+hostspec/database?option=value

Most variations are allowed: phptype://usernameassword@protocol+hostspec:110//usr/db_file.db
phptype://usernameassword@hostspec/database
phptype://usernameassword@hostspec
phptype://username@hostspec
phptype://hostspec/database
phptype://hostspec
phptype:///database
phptype:///database?option=value&anotheroption=anothervalue
phptype(dbsyntax)
phptype
Die beiden markierten DSN kämen bei Dir in Frage, wenn Dein MySQL Server nicht auf dem Paßwort besteht.

Oder besser das: phptype://username@hostspec/database

Es geht auch das:
PHP-Code:
<?php
$username
='chef';
$host='localhost';
$password='';
$database='meine';
mysql://$username:$password@$host/database
?>
Dein Script sieht ähnlich dem aus: http://pear.php.net/manual/en/packag...p.example2.php

Falls es Dich tröstet:
a. Mit Auth_HTTP hatte ich übrigens damals Probleme gehabt.
b. kontrolliere, ob die Paßwortspalte varchar(32) ist. Is mir selber schon passiert...
 
Alt 29.07.2005, 19:38  
Gast
 
Beiträge: n/a
Standard

Ich habs aufgegeben. Irgendwo hängts mit dem Auth_HTTP. Das normale Auth klappt. Egal was für ne VarChar Anzahl. Na ja danke für die Hilfe werde eben das normale benutzen.

Dürfte doch genauso sicher sein wie das HTTP Ding?
 
Alt 29.07.2005, 19:44  
Gast
 
Beiträge: n/a
Standard

Guck Dir mein phpinfo an: http://test.php-help.info/phpinfo.php
Entscheidend ist register_globals = Off und die Sessionconfig.

Achte ebenfalls darauf, daß die Logindaten escaped werden, um SQL Injektionen zu vermeiden.
 
Alt 29.07.2005, 20:56  
Gast
 
Beiträge: n/a
Standard

Äh Meikel kurz noch was am Rande zum Abschluss dieses Threads. Du schreibst das die Login Daten escaped werden um Injektionen vorzubeugen.
Um Kommentare oder GB Einträge einzufügen benutze ich Pear DB somit Prepare & Execute.

Ist das so halbwegs richtig & sicher wie ich etwas in DB hinzufüge? Dieses Prepare und Execute kümmert sich doch um das escapen oder?


Formular ausfüllen -> strip tags und trim auf POST Array -> Formularvalidierung -> DB sql query und array $_POST[author], etc. aufstellen -> DB execute

Sollte die Formularvalidierung nicht gültig sein wird folgendes gemacht:
POST Array stripslashes, htmlentities -> Rückgabe ins Formular für Korrektur und Fehlermeldung
 
Alt 29.07.2005, 21:34  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von ex³
Dieses Prepare und Execute kümmert sich doch um das escapen oder?
KA. Da hilft nur nachgucken, testen und an der passenden Stelle die SQL Strings ausprinten.

Deshalb sage ich ja immer, daß die Verwendung von Fremdscripten keine Zeit spart, weil man sie sowieso überprüfen muß. Und das Überprüfen ist bei der Programmierung eh immer der zeitaufwendigste Teil.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PEAR Package installieren Zergling-new PHP Tipps 2006 6 03.01.2006 21:49
[Erledigt] SOAP/Client.php: PHP Fatal error: Method SOAP_Client::__call PHP-Fortgeschrittene 6 25.11.2004 09:48

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
pear auth tutorial, pear auth_http tut, php auth_http realm, auth_http php, auth_http(\array\, auth_crypttype, auth_http() apache, php http authorization ohne loginbox, pear mysql login, pear $dsn, php pear auth_http dsn, auth_http, apache auth_http, pear tutorial, auth_http tutorial, wie sicher ist pear auth_http, pear auth_http tutorial, auth_http.php, www.mysecretpage.de, php pear soap manual

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:22 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.