Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Perdita Path cartella

  1. #1

    Perdita Path cartella

    Ciao a tutti,
    ho un sistema di visualizzazione delle cartelle nel server al quale ho applicato una login, che in base al nome utente mi visualizza solo la cartella avente lo stesso nome dell'utente, ad es. l'utente con username "pippo" e psw "123" accede alla cartella "pippo". Per fare ciò ho usato questo script:

    userfolder = Request.Form("username")
    sPath = "/public/"&userfolder&""
    ...

    e fino qui tutto bene, ma però poi facendo operazioni di rinomina,delete,aggiorna,etc. dei file contenuti all'interno della cartella "pippo" è come se perdesse il percorso della cartella, infatti mi rimanda alla cartella /public/ e non /public/pippo..quinda va a perdere il "sPath".
    Come posso risolvere il problem?
    Thanks!

  2. #2
    senza lo script FSO tuttofare non si capisce il problema...

    forse usi funzioni che modificano l'SPATH passata per ByRef...

    facci vedde...
    san imente saluta

    * http://simonecingano.it *

  3. #3
    Ciao imente, grazie per il tuo impegno ad aiutarmi.
    Allora postare tutto il codice mi sembra esagerato visto che sono 3 file da 200 linee, inizio con il postarti la pagina filemanager.asp per vedere se c'è già qui qualcosa di sbagliato:

    <%
    Dim fs, sAction, sFile, sPath, sFolder, sFileType, scriptname, dbfile, ReadStream, WriteStream, WriteFile, fileobject, filecollection, file, startpath, lineid, bgcolor, bgcolor_on, bgcolor_off, foldercollection, folder, errornum, errorcode
    errornum = 0
    errorcode = ""
    scriptname=Request.ServerVariables("Script_Name")
    sAction = Request.Querystring("action")
    sFileType = Request.Querystring("filetype")
    userfolder = Request.Form("username")
    If Request.Querystring("path") = "" Then
    sPath = "/public/"&userfolder&""
    Else
    sPath = Request.Querystring("path")
    If InStr(sPath,"../") Then
    errornum = errornum+1
    errorcode = errorcode & "[*]Uso non corretto di ""../"". Operazione non consentita."
    End If
    End If
    If sPath="/" Then
    If Request.Querystring("file") = "" Then
    sFile = sPath & Request.Form("file")
    Else
    sFile = sPath & Request.Querystring("file")
    End If
    If Request.Querystring("folder") = "" Then
    sFolder = sPath & Request.Form("folder")
    Else
    sFolder = sPath & Request.Querystring("folder")
    End If
    Else
    If Request.Querystring("file") = "" Then
    sFile = sPath & "/" & Request.Form("file")
    Else
    sFile = sPath & "/" & Request.Querystring("file")
    End If
    If Request.Querystring("folder") = "" Then
    sFolder = sPath & "/" & Request.Form("folder")
    Else
    sFolder = sPath & "/" & Request.Querystring("folder")
    End If
    End If
    session("foldername")=spath
    If errornum < 1 Then
    Set fs = Server.CreateObject("Scripting.FileSystemObject")
    Select Case sAction
    Case "editfile"
    Select Case sFileType
    Case "htm", "asp", "txt", "inc", "html", "shtml", "shtm", "js", "css"
    EditFile
    Case "mdb", "dat"
    EditDb
    Case else
    FileTypeUnsupported
    End Select
    Case "savefile"
    SaveFile
    Case "viewfolder"
    Showlist
    Case "newfile"
    CreateFile
    Case "newfolder"
    CreateFolder
    Case "deletefile"
    DeleteFile
    Case "deletefolder"
    DeleteFolder
    Case "CreateNewFolder"
    CreateNewFolder
    Case "UploadFiles"
    UploadFiles
    Case "RenameFolder"
    RenameFolder
    Case "RenameFile"
    RenameFile
    Case Else
    Showlist
    End Select
    Set fs = Nothing
    Else
    DisplayErrors
    End If
    %>

  4. #4
    difficile capire così ad occhio (e con l'occhio stanco)..

    comunque due cose

    1. cosa ne fai di SESSION("FOLDERNAME")
    viene modificata in seguito (dalle funzioni delle altre pagine)

    2. secondo me l'errore è qui
    sPath = Request.Querystring("path")
    questo quando avviene?

    in che caso il querystring è diverso da ""?
    san imente saluta

    * http://simonecingano.it *

  5. #5
    non vorrei avere la tua vista sulla mia coscienza..
    comunque:
    SESSION("FOLDERNAME")
    a dirti la verita non so bene per cosa serve..

    sPath = Request.Querystring("path")
    il path viene dalla pagina fm_include.asp dove vengono inserite le azioni di rinomina, delete e creazione di nuove cartelle all'interno di quella principale, ed es:
    Response.Write "<LI>Continuare?</LI>"
    e anche da un form:
    <form method="POST" action="<%=scriptname%>?action=newfolder&path=<%=s Path%>">
    le mie conoscenze di asp non mi permettono di andare oltre..

    Sto valutando di passare al .htaccess? Cosa ne dici? Posso ugualmente "dirottare" ogni utente in una directory personale e protetta con psw?
    Grazie per l'aiuto!

  6. #6
    calma...
    la scelta di una o l'altra soluzione non deve essere imposta dalle difficoltà, ma da un'insieme di pro e contro (dove anche il tempo può giocare la sua parte)...

    cmq... SESSION("FOLDERNAME") non penso influenzi.
    però mi vien da pensare ora che il codice non sia tuo...
    no problem.

    allora
    per capire se il problema è nel passaggi di dati...

    metti un

    response.write sPath in due punti

    1. sPath = Request.Querystring("path")
    response.write sPath

    2. Response.Write "<LI>http://Continuare <font color="#FF00...Path%></font>?</LI>"

    purtroppo senza il codice in mano non è facile capire dov'è il problema...

    ora la cosa migliore è capire QUANDO (o meglio DOVE) la variabile smetta di essere completa...

    ---

    in ogni caso mi è venuta un'altra soluzione
    tanto l'utente è sempre lo stesso

    volendo puoi evitare di spostare SPATH fra le pagine con il querystring (pagina.asp?path=...) ma utilizando appunto la variabile session

    la imposti una volta e poi la recuperi sempre da li...

    la cosa veramente ottima sarebbe salvare SOLO il nome utente nella session (tanto per ricordare il login lo dovrai pur fare no) e utilizzarlo insieme a una costante (che sarà la tua "public/") in ogni punto dove necessaria la cartella

    questa è la soluzione ottimale

    ---
    san imente saluta

    * http://simonecingano.it *

  7. #7
    no, infatti il codice non è il mio e non ne voglio sicuramente i meriti, io ho fatto solamente la pagina login.asp che va a verificare username e psw nel db.
    Ho provato a mettere il response.write sPath ma nulla.. e invece nel <%=sPath%>?.. errore di sintassi. Posso anche capire che sia dura senza codice ma come faccio, se vuoi posto il codice dei 3 file.
    Per quanto riguarda la tua soluzione alternativa, mi sembra valida ma:
    - gli utenti sono più di uno (pippo,pluto,etc)
    - attualmente io già recupero solo il nome utente dal login:
    userfolder = Request.Form("username ")
    e lo uso con la costante /public/
    sPath = "/public/ "&userfolder&""'
    non è così?
    se vuoi ti mando anche i files ma non vorrei farti imapzzire troppo.
    Grazie ancora.

  8. #8
    sei fin troppo gentile...
    ultimamente qui in giro c'è mania di CALL CENTER.
    mandami pure che faccio qualcosa stanotte
    imente [at] virgilio [dot] it

    scusami per il <%=spath%>...
    stupido io, nn avevo visto il response.write :P

    codice:
    Response.Write "<LI>Continuare " & sPath & "?</LI>"
    san imente saluta

    * http://simonecingano.it *

  9. #9
    ti ho mandato l'email..grazie!!
    fai in tempo anke nei prox gg, la notte è fatta per riposare e tr******!


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.