PDA

Visualizza la versione completa : Intercettare sessioni create da Php


|\/|atrix
05-05-2006, 12:13
Salve a tutti,
Ho una pagina php nella quale se mi identifico viene appeso un valore alla sessione es.
$_SESSION['identificato'] = 1;
Se sono identificato mi appare un form che fa il post dei dati ad uno script cgi che poi eseguirà delle azioni.
Vorrei ora inserire un controllo nello script cgi che faccia si che solo se $_SESSION['identificato'] == 1 (cioè se l'utente è autorizzato, quindi ha fatto il login dalla pagina php) esegua le azioni...
Cosa devo scrivere nello script cgi?
Premetto che ho già fatto un giro sul web ed ho già letto i thread del forum senza cavare un ragno dal buco...
Grazie a tutti per eventuali risposte!
Ciao! :ciauz:

|\/|atrix
05-05-2006, 22:17
up! :confused:
...poco frequentato il forum cgi :stordita:

|\/|atrix
07-05-2006, 22:46
Ditemi almeno che non si può fare... così mi metto l'anima in pace! :messner:

Mich_
08-05-2006, 09:55
Non so cosa intendi per "script CGI".
Io conosco gli script in Perl, e conosco l'interfaccia CGI.

Se la domanda e`:
quale e` la sintassi Perl per un if di quel tipo
una risposta potrebbe essere:
if($_SESSION['identificato'] == 1) {
# qui le istruzioni da svolgere
} else {
# qui la sezione else
}

|\/|atrix
08-05-2006, 13:13
Innanzitutto ti ringrazio per la tua risposta!
Lo avevo già provato ma niente...
Ti posto esattamente un esempio reale di quello che devo fare:
Pagina login.php

<?
session_start();
$_SESSION["login"] = 1;

echo "prova ('cgi-bin/test.cgi')";

if($_SESSION["login"] == 1){

echo "autorizzato";

}else{

echo "non autorizzato";

}
?>
Pagina test.cgi

#!/usr/bin/perl -w

print "Content-type: text/html\n\n";

if($_SESSION["login"] == 1){

print "autorizzato";

}else{

print "non autorizzato";

}
Il risultato è che nella pagina php mi stampa autorizzato, mentre quando clicco su "prova" la pagina cgi mi dice che non sono autorizzato...
Avrei bisogno di capire nella pagina cgi se sono stato autorizzato oppure no.
Grazie ancora per l'interessamento

Mich_
08-05-2006, 14:50
Mi sa che devi chiarire meglio il contorno.

Nella stessa sessione usi sia PHP che Perl? (se posso chiedere: Perche?)
Riesci da Perl ad accedere alla sessione settata da PHP? O e` questa la domanda?

shishii
08-05-2006, 17:31
Il problema è che PHP agisce come un tread di apache, mentre Perl come processo esterno, quindi sono tendenzialmente difficili da mettere in comunicazione, salvo che non si usino strumenti appositi come variabili d'ambiente, pipe e simili.

Io proverei a dare un occhiata alla famiglia di librerie "Apache::Session" e simili reperibili su http://search.cpan.org

|\/|atrix
08-05-2006, 19:42
Originariamente inviato da shishii
Il problema è che PHP agisce come un tread di apache, mentre Perl come processo esterno, quindi sono tendenzialmente difficili da mettere in comunicazione, salvo che non si usino strumenti appositi come variabili d'ambiente, pipe e simili.

Io proverei a dare un occhiata alla famiglia di librerie "Apache::Session" e simili reperibili su http://search.cpan.org
Ti ringrazio per l'attenzione!
Il sistema delle liberie lo avevo già provato... il problema è che non posso installare nulla sullo spazio...
C'è un modo per usare le librerie senza installarle, non so, importandole ad esempio come si fa in java?

shishii
09-05-2006, 14:33
è possibile istallare queste librerie anche da utente ma alle seguenti condizioni:

1- avere accesso alla shell (telnet, SSH)
2- potere eseguire make
3- potere eseguire gcc (il compilatore)

a queste condizioni puoi compilare ed istallare le librerire nel tuo spazio. Ammettendo che sia:
/home/nome

crei la directory lib

poi digiti:

> perl Makefile.PL --prefix=/home/nome/dir
> make
> make test
> make install

dopodichè nelgi script che devono usare quelle librerie inserisci all'inizio :

#!/usr/bin/perl

use lib "/home/nome/lib";

|\/|atrix
09-05-2006, 23:35
Niente accesso shell... nessuna possibilità di eseguire make o gcc... qualche altra idea?
Quindi non è possibile importarle senza installarle?
Grazie ancora per l'interessamento!

Loading