• User

    Impedire accesso diretto a pagine php

    Ciao a tutti
    Vi espongo subito il mio problema.
    Come da titolo, avrei bisogno di uno script in grado di impedire l'accesso ad una determinata pagina (pagina.htm) se questo avviene in modo diretto; ovvero se viene inserito direttamente l'url della pagina ww.miosito.it/pagina.htm. Ma deve consentire l'acceso ad essa tramite link o reindirizzamento. Non so se è chiaro quello che chiedo.
    Non so neanche se è la soluzione ideale al mio problema.:?
    In pratica ho un sito nel quale per registrarsi è necessario pagare una quota con paypal. Effettuato il pagamento c'è il reindirizzamento alla pagina del mio sito che conferma e completa l'iscrizione. Se un qualunque utente ancora non registrato accede direttamente a questa pagina può comunque registrarsi senza avere effetuato il pagamento. Non credo di poter creare una pagina di conferma diversa per ciascun utente, perchè causerebbe problemi nella creazione del pulsante pagamento di paypal.
    Come posso risolvere?
    Va bene l'idea dello script che impedisce l'accesso diretto alla pagina o non funzionerebbe?

    Grazie a tutti in anticipo


  • Consiglio Direttivo

    Ciao miticopierpy

    forse ti converrebbe aggiungere un campo *pagamento *nella tabella utenti
    Se impostato a 0: non ti logghi e ricordi di effettuare il pagamento
    se impostato a 1: ti logghi

    Se la registrazione la fai a monte puoi trasportarti l'id utente al pagamento con paypal ed al reindirizzamento di ritorno eseguire uno script che ti aggiorni quel campo impostandolo ad 1....oppure attivi manualmente 😄

    Non so se ti è possibile farlo, credo comunque che sia migliore come soluzione 😉


  • User

    Ciao e grazie per la risposta.

    In effetti il sito è già strutturato come mi consigli tu, ovvero che l'utente prima di effettuare il pagamento ha il valore stato impostato a 0. Ma lo script che permette di passare allo stato 1 è presente nella pagina di conferma di paypal. Forse non sono stato molto chiaro nel post di prima, ma se l'utente che effettua la registrazione,e quindi si trova allo stato 0, al momento di pagare la quota di iscrizione si collega direttamente alla pagina di conferma (quella alla quale reindirizza paypal), si eseguirà lo script che gli permetterà di passare allo stato 1 e quindi di iscriversi senza aver pagato nulla. Come posso fare?
    C'è forse un modo per generare per ogni utente una pagina di conferma diversa alla quale si possa sempre accedere da paypal?


  • Consiglio Direttivo

    Non so bene come funziona ma se non erro nel reindirizzamento di paypal puoi "trasportarti" un valore tramite un hidden data. Te fai fare la registrazione dell'utente, che non vedrà nulla perché impostato a 0 il pagamento, tramite la tua procedura effettua il pagamento con paypal ed al ritorno ti trasporti l'id utente per impostare su 1 solo quell'id 😉
    Da quel momento avrà libero accesso, diversamente non ci sono santi (tranne craker) che permettano di impostare su 1 quel valore per quell'utente 😉


  • User

    Grazie, proverò a spulciare meglio la guida di paypal 😉


  • User Attivo

    miticopierpy ho letto che sai fare il passaggio di valori da 0 a 1 con la risposta di ritorno di paypal, io sarei in mezzo ai guai per quanto riguarda questo passaggio :():

    Mi spiego meglio, uso la funzione "pagamenti ricorrenti" di Paypal e quando paypal torna alla mia pagina (dopo il pagamento avvenuto) nn son sicuro che mi torni anche la variabile :bho: ne ho creata una di nome 'custom' se serve posto anche il codice del bottone [iscriviti subito] autocreato da paypal.

    thanks


  • User

    Ciao
    Il mio sito è un po' diverso in quanto non utilizza il pulsante "iscriviti subito" bensì il pulsante "paga adesso". Comunque le cose non dovrebbero cambiare.
    Ti spiego come è strutturato:
    L'utente compila il form con i suoi dati i quali vengono trasferiti nel database in modo temporaneo. Questo perchè il record dell'utente prima che si effetui il pagamento ha valore 0.
    Completata questa prima fase, l'utente viene rimandato ad una pagina con il tasto "paga adesso". Una volta effetuato il pagamento viene reindirizzato ad una pagina contenente un nuovo form con i campi username e password. Viene allora richiamato uno script che verifica l'esistenza dell'user nel database temporaneo, se esiste tale utente si eseguirà lo script che aggiornerà il record del database trasformando il valore di stato da "0" ad "1", rendendo l'utente iscritto a tutti gli effetti. Ecco il codice in php:

    Questo verifica che l'utente esista e che la password sia corretta

    
    <?
    $user=$_POST['user'];
    $pass=$_POST['pass'];
     
    include("config.inc.php");
    $conn = mysql_connect($db_host,$db_user,$db_pass) or die("Errore nella connessione a MySql: " . mysql_error());
    mysql_select_db($db_name,$conn) or die("Errore nella selezione del db: " . mysql_error());
    $sql="SELECT * FROM tabella WHERE user ='$user' and pass='$pass'";
    $result=mysql_query($sql);
     
    $count=mysql_num_rows($result);
    if($count==1){
    
    

    Se l'utente esiste aggiorna i valori del campo di quel determinato utente:

    
    mysql_query ("UPDATE tabella SET stato = '1' WHERE user = '$user'") or die ( "Non riesco ad eseguire la richiesta");
     
    echo "Complimenti hai completato la tua registrazione" ;
    }
    else {
    echo "Attenzione username o password errati";
    }
     
    mysql_close($conn);
    ?>   
    
    

    Come vedi non ho conservato alcuna variabile, ma tramite il form della pagina di conferma, l'utente può farsi riconoscere e si risale comunque ad essa.
    Se non vuoi fare in questo modo, ma vuoi che venga "memorizzata" la variabile da utilizzare poi nella pagina di conferma, ti consiglio di documentarti sulle sessioni e sui cookie.

    Spero di esserti stato utile.
    Ciao :ciauz:


  • User Attivo

    sigh non è il caso mio ... i miei utenti hanno 3 stati !!! [0]iscritto [1]attivato [2]pagante

    Mi andrò a documentare, grazie lo stesso 😉

    ciao