session user...
Appie_Dijk - 23/10/2006 18:03 (laatste wijziging 23/10/2006 18:04)
Lid
Hallo iedereen,
ik heb een filemanager in mijn CMS (TinyMCE).
nu werkt het prima maar wil ik dat elke klant in een eigen map terecht komt.
het originele "config.php" wat erbij zit heeft de volgende inhoud:
<?php
global $Config ;
// SECURITY: You must explicitelly enable this "connector". (Set it to "true").
$Config['Enabled'] = true ;
// Path to user files relative to the document root.
$Config['UserFilesPath'] = '/UserFiles' ;
$Config['UserFilesAbsolutePath'] = '' ;
$Config['AllowedExtensions']['File'] = array() ;
$Config['DeniedExtensions']['File'] = array('php','php3','php5','phtml','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg','cgi') ;
$Config['AllowedExtensions']['Image'] = array('jpg','gif','jpeg','png') ;
$Config['DeniedExtensions']['Image'] = array() ;
$Config['AllowedExtensions']['Flash'] = array('swf','fla') ;
$Config['DeniedExtensions']['Flash'] = array() ;
$Config['AllowedExtensions']['Media'] = array('swf','fla','jpg','gif','jpeg','png','avi','mpg','mpeg') ;
$Config['DeniedExtensions']['Media'] = array() ;
?>
<?php
// SECURITY: You must explicitelly enable this "connector". (Set it to "true").
$Config [ 'Enabled' ] = true ;
// Path to user files relative to the document root.
$Config [ 'UserFilesPath' ] = '/UserFiles' ;
$Config [ 'UserFilesAbsolutePath' ] = '' ;
$Config [ 'AllowedExtensions' ] [ 'File' ] = array ( ) ; $Config [ 'DeniedExtensions' ] [ 'File' ] = array ( 'php' , 'php3' , 'php5' , 'phtml' , 'asp' , 'aspx' , 'ascx' , 'jsp' , 'cfm' , 'cfc' , 'pl' , 'bat' , 'exe' , 'dll' , 'reg' , 'cgi' ) ;
$Config [ 'AllowedExtensions' ] [ 'Image' ] = array ( 'jpg' , 'gif' , 'jpeg' , 'png' ) ; $Config [ 'DeniedExtensions' ] [ 'Image' ] = array ( ) ;
$Config [ 'AllowedExtensions' ] [ 'Flash' ] = array ( 'swf' , 'fla' ) ; $Config [ 'DeniedExtensions' ] [ 'Flash' ] = array ( ) ;
$Config [ 'AllowedExtensions' ] [ 'Media' ] = array ( 'swf' , 'fla' , 'jpg' , 'gif' , 'jpeg' , 'png' , 'avi' , 'mpg' , 'mpeg' ) ; $Config [ 'DeniedExtensions' ] [ 'Media' ] = array ( ) ;
?>
dit werkt perfect, hij zet alles netjes in de map "UserFiles".
Als ik
$Config['UserFilesPath'] = '/UserFiles' ;
$Config [ 'UserFilesPath' ] = '/UserFiles' ;
vervang voor:
$Config['UserFilesPath'] = '/UserFiles/albert' ;
$Config [ 'UserFilesPath' ] = '/UserFiles/albert' ;
dan zet hij het netjes in de map "UserFiles/albert"
maar als ik het volgende wil lukt het niet:
//de volgende 2 regels heb ik er extra bijgezet:
require("../../../../../config/session.php");
$gebruikersnaam = $_SESSION['suser'];
$Config['UserFilesPath'] = '/UserFiles/". $gebruikersnaam ."' ;
//de volgende 2 regels heb ik er extra bijgezet:
require ( "../../../../../config/session.php" ) ;
$gebruikersnaam = $_SESSION [ 'suser' ] ;
$Config [ 'UserFilesPath' ] = '/UserFiles/". $gebruikersnaam ."' ;
"$gebruikersnaam" is op dat moment "albert" dat heb ik al gecontroleerd, dus het heeft wel een waarde.
weet iemand he dit kan???
8 antwoorden
Gesponsorde links
GTW - 23/10/2006 18:22
PHP gevorderde
probeer dit eens:
<?php
$Config['UserFilesPath'] = '/UserFiles/'. $gebruikersnaam;
?>
<?php
$Config [ 'UserFilesPath' ] = '/UserFiles/' . $gebruikersnaam ;
?>
er zit een fout in de quotes
Stijn - 23/10/2006 18:24
PHP expert
require("../../../../../config/session.php");
dus 5 mappen onder de map waar het bestand wordt gebruikt zit een map config met een bestand session.php?
waar wordt dat "bestand" waar je die require aanroept gebruikt? vb in http://localhost/mijnsite/index.php
stijn
Thomas - 24/10/2006 11:27
Moderator
Is je sessie al gestart voordat je deze config gebruikt?
Appie_Dijk - 24/10/2006 16:20 (laatste wijziging 27/10/2006 15:18)
Lid
@FangorN: de sessie is al gestart ja... al voordat deze config gebruikt wordt.
Thomas - 24/10/2006 16:26
Moderator
Hoe luidt $Config['UserFilesPath'] dan?
Als je sessie is gestart en $_SESSION['suser'] niet leeg is zou deze constructie gewoon moeten werken.
Persoonlijk zou ik user-id's gebruiken, in plaats van usernames (ik denk aan speciale karakters, spaties etc. in usernames? Dat gaat niet lekker werken met folders enzo...).
Appie_Dijk - 25/10/2006 22:49 (laatste wijziging 27/10/2006 15:18)
Lid
@FangorN: ik zal nog kijken wat $Config['UserFilesPath'] inhoud... en de users maak ik zelf aan, komen geen rare tekens, spaties en zelfs geen hoofdletters in voor!!! dus dat probleem valt mee ;)
dit staat in "connector.php"
connector.php
<?php
include('config.php') ;
include('util.php') ;
include('io.php') ;
include('basexml.php') ;
include('commands.php') ;
if ( !$Config['Enabled'] )
SendError( 1, 'This connector is disabled. Please check the "editor/filemanager/connectors/php/config.php" file' ) ;
// Get the "UserFiles" path.
$GLOBALS["UserFilesPath"] = '' ;
if ( isset( $Config['UserFilesPath'] ) )
$GLOBALS["UserFilesPath"] = $Config['UserFilesPath'] ;
else if ( isset( $_GET['ServerPath'] ) )
$GLOBALS["UserFilesPath"] = $_GET['ServerPath'] ;
else
$GLOBALS["UserFilesPath"] = '/UserFiles/' ;
if ( ! ereg( '/$', $GLOBALS["UserFilesPath"] ) )
$GLOBALS["UserFilesPath"] .= '/' ;
if ( strlen( $Config['UserFilesAbsolutePath'] ) > 0 )
{
$GLOBALS["UserFilesDirectory"] = $Config['UserFilesAbsolutePath'] ;
if ( ! ereg( '/$', $GLOBALS["UserFilesDirectory"] ) )
$GLOBALS["UserFilesDirectory"] .= '/' ;
}
else
{
// Map the "UserFiles" path to a local directory.
$GLOBALS["UserFilesDirectory"] = GetRootPath() . $GLOBALS["UserFilesPath"] ;
}
DoResponse() ;
function DoResponse()
{
if ( !isset( $_GET['Command'] ) || !isset( $_GET['Type'] ) || !isset( $_GET['CurrentFolder'] ) )
return ;
// Get the main request informaiton.
$sCommand = $_GET['Command'] ;
$sResourceType = $_GET['Type'] ;
$sCurrentFolder = $_GET['CurrentFolder'] ;
// Check if it is an allowed type.
if ( !in_array( $sResourceType, array('File','Image','Flash','Media') ) )
return ;
// Check the current folder syntax (must begin and start with a slash).
if ( ! ereg( '/$', $sCurrentFolder ) ) $sCurrentFolder .= '/' ;
if ( strpos( $sCurrentFolder, '/' ) !== 0 ) $sCurrentFolder = '/' . $sCurrentFolder ;
// Check for invalid folder paths (..)
if ( strpos( $sCurrentFolder, '..' ) )
SendError( 102, "" ) ;
// File Upload doesn't have to Return XML, so it must be intercepted before anything.
if ( $sCommand == 'FileUpload' )
{
FileUpload( $sResourceType, $sCurrentFolder ) ;
return ;
}
CreateXmlHeader( $sCommand, $sResourceType, $sCurrentFolder ) ;
// Execute the required command.
switch ( $sCommand )
{
case 'GetFolders' :
GetFolders( $sResourceType, $sCurrentFolder ) ;
break ;
case 'GetFoldersAndFiles' :
GetFoldersAndFiles( $sResourceType, $sCurrentFolder ) ;
break ;
case 'CreateFolder' :
CreateFolder( $sResourceType, $sCurrentFolder ) ;
break ;
}
CreateXmlFooter() ;
exit ;
}
?>
<?php
include ( 'config.php' ) ;
include ( 'util.php' ) ;
include ( 'io.php' ) ;
include ( 'basexml.php' ) ;
include ( 'commands.php' ) ;
if ( ! $Config [ 'Enabled' ] )
SendError( 1 , 'This connector is disabled. Please check the "editor/filemanager/connectors/php/config.php" file' ) ;
// Get the "UserFiles" path.
$GLOBALS [ "UserFilesPath" ] = '' ;
if ( isset ( $Config [ 'UserFilesPath' ] ) ) $GLOBALS [ "UserFilesPath" ] = $Config [ 'UserFilesPath' ] ;
else if ( isset ( $_GET [ 'ServerPath' ] ) ) $GLOBALS [ "UserFilesPath" ] = $_GET [ 'ServerPath' ] ;
else
$GLOBALS [ "UserFilesPath" ] = '/UserFiles/' ;
if ( ! ereg ( '/$' , $GLOBALS [ "UserFilesPath" ] ) ) $GLOBALS [ "UserFilesPath" ] .= '/' ;
if ( strlen ( $Config [ 'UserFilesAbsolutePath' ] ) > 0 ) {
$GLOBALS [ "UserFilesDirectory" ] = $Config [ 'UserFilesAbsolutePath' ] ;
if ( ! ereg ( '/$' , $GLOBALS [ "UserFilesDirectory" ] ) ) $GLOBALS [ "UserFilesDirectory" ] .= '/' ;
}
else
{
// Map the "UserFiles" path to a local directory.
$GLOBALS [ "UserFilesDirectory" ] = GetRootPath( ) . $GLOBALS [ "UserFilesPath" ] ;
}
DoResponse( ) ;
function DoResponse( )
{
if ( ! isset ( $_GET [ 'Command' ] ) || ! isset ( $_GET [ 'Type' ] ) || ! isset ( $_GET [ 'CurrentFolder' ] ) ) return ;
// Get the main request informaiton.
$sCommand = $_GET [ 'Command' ] ;
$sResourceType = $_GET [ 'Type' ] ;
$sCurrentFolder = $_GET [ 'CurrentFolder' ] ;
// Check if it is an allowed type.
if ( ! in_array ( $sResourceType , array ( 'File' , 'Image' , 'Flash' , 'Media' ) ) ) return ;
// Check the current folder syntax (must begin and start with a slash).
if ( ! ereg ( '/$' , $sCurrentFolder ) ) $sCurrentFolder .= '/' ; if ( strpos ( $sCurrentFolder , '/' ) !== 0 ) $sCurrentFolder = '/' . $sCurrentFolder ;
// Check for invalid folder paths (..)
if ( strpos ( $sCurrentFolder , '..' ) ) SendError( 102 , "" ) ;
// File Upload doesn't have to Return XML, so it must be intercepted before anything.
if ( $sCommand == 'FileUpload' )
{
FileUpload( $sResourceType , $sCurrentFolder ) ;
return ;
}
CreateXmlHeader( $sCommand , $sResourceType , $sCurrentFolder ) ;
// Execute the required command.
switch ( $sCommand )
{
case 'GetFolders' :
GetFolders( $sResourceType , $sCurrentFolder ) ;
break ;
case 'GetFoldersAndFiles' :
GetFoldersAndFiles( $sResourceType , $sCurrentFolder ) ;
break ;
case 'CreateFolder' :
CreateFolder( $sResourceType , $sCurrentFolder ) ;
break ;
}
CreateXmlFooter( ) ;
}
?>
misschien dat iemand hier iets uit wijzer wordt???
ik kom er namelijk niet uit...
Thomas - 27/10/2006 15:44
Moderator
Ik bedoelde eigenlijk het volgende:
Zet eens het volgende na de toekenning waarin je $gebruikersnaam hier aan toevoegt:
die($Config['UserFilesPath']);
(bij wijze van debug - druk de waarde af)
En doe dit nog eens op het moment dat je deze config-variabele gaat gebruiken en kijk of deze tussendoor is veranderd... Dan kun je je zoektocht gaan beperken tot enkele code-fragmenten.
Gesponsorde links
Dit onderwerp is gesloten .