Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di lupo92
    Registrato dal
    Feb 2004
    Messaggi
    254

    Protezione pagina con pwd

    Salve a tutti,

    ho adattato uno script trovato su freephp con il quale invio delle email.
    Lo script funziona in questo modo.
    In apertura chiede uno USER e una PASSWORD presenti in un DB, una volta digitata in modo corretto USER e PWD apre la form con una funzione per l'invio della mail.

    Il problema è che se uno digita nella barra degli indirizzi es. (
    Codice PHP:
    www.miosito.it/newsletter/admin.php?funzione=crea_newsletter 
    ) questo si apre senza nessuna protezione.

    Come poteri fare per proteggere la pagina e fare in modo che solo chi conosce la password riesce a mandare mail.


    Sarò stato chiaro?
    lupo

  2. #2
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    va eseguito un controllo a monte di admin.php.... in pratica esegui un controllo sull'autenticazione.. magari tramite cookie per evitare il relog continuo...

    qualcosa del tipo:

    Codice PHP:
    if (!$_COOKIE["logged"])
    echo 
    "accesso nn consentito, esegui il login"
    magari se posti un pò di codice vediamo che si può fare...
    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  3. #3
    Utente di HTML.it L'avatar di lupo92
    Registrato dal
    Feb 2004
    Messaggi
    254
    Codice PHP:
    include("config.inc.php");
    $file $_SERVER['PHP_SELF'];
    echo
    "
    <center>
    <font face=verdana size=2>Amministrazione"
    ;
    function 
    login() {
    include(
    "config.inc.php");
    global 
    $file;
    echo
    "
    <form action=
    $file method=post>
    <font size=1 face=verdana>User:
    <input type=text name=user class=input size=15>

    <font size=1 face=verdana>Paswword:
    <input type=password name=pwd class=input size=15>
    <input type=submit name=submit1 class=bottone value=Login>
    </form>"
    ;
    }
        if(isset(
    $_POST['submit1'])) {
            
    $db mysql_connect($db_host$db_user$db_password) or die('Errore connessione database');
            
    mysql_select_db($db_name$db) or die('Errore selezione database');
        if((
    $_POST['user']) && ($_POST['pwd'])) {
            
    $query "SELECT admin_ID FROM admin_newsletter WHERE user = '$_POST[user]' AND password = '$_POST[pwd]'";
            
    $risultato mysql_query($query);
            
    $num mysql_num_rows($risultato);

                if(
    $num>0) {
                    
    Header("Location: $file?funzione=crea_newsletter");

                    } else {
                        echo
    "<script>alert('User o password sbagliati.');</script>";
       }
      }
     }


    function 
    amministrazione() {
    include(
    "config.inc.php");
    global 
    $file;

    $db mysql_connect($db_host$db_user$db_password) or die('Errore connessione database');
    mysql_select_db($db_name$db) or die('Errore selezione database');

    $query "SELECT mail FROM membri_newsletter ORDER BY membro_ID DESC";
    $ris mysql_query($query);

    echo
    "


    <form name=lupo>
    <font size=1 face=verdana>Invia a: <select name=lista onChange = \"self.location = document.lupo.lista[document.lupo.lista.selectedIndex].value;\">\n>
    <option selected> seleziona destinatari </option>"

    while(
    $array mysql_fetch_array($ris)) {
    echo
    "<option value=admin.php?funzione=crea_newsletter&indirizzo=$array[mail]>$array[mail]</option>";
    }
    echo
    "</select></form>";
    }

    function 
    crea_newsletter() {

    include(
    "config.inc.php");
    global 
    $file;

    amministrazione();

    $query "SELECT * FROM indirizzi";
    $risultato mysql_query($query);

     if(
    $_GET['indirizzo'] != "") {

    $query3 "SELECT indirizzi_ID FROM indirizzi WHERE indirizzi = '$_GET[indirizzo]'";
    $risultato3 mysql_query($query3);
    $num mysql_num_rows($risultato3);

        if(
    $num != 0) {
    echo
    "<script>alert('L\'indirizzo è già stato selezionato!')</script>";
        
        } else {


    $query2 "INSERT INTO indirizzi(indirizzi_ID, indirizzi) VALUES(null, '$_GET[indirizzo]')";
    $risultato2 mysql_query($query2);
    Header("Location: $file?funzione=crea_newsletter");
     }
    }
        if(
    $_GET['cancella'] != "") {
    $query "DELETE FROM indirizzi WHERE indirizzi = '$_GET[cancella]'";
    $risultato mysql_query($query);
    Header("Location: $file?funzione=crea_newsletter");
    }

    echo
    "
    <form action=
    $file?funzione=crea_newsletter method=post>
    <font size=1 face=verdana>Oggetto:
    <input type=text name=oggetto class=input size=99>
    <font size=1 face=verdana>Messaggio:

    <textarea name=messaggio class=input cols=99 rows=20></textarea>
    <input type=submit name=submit3 class=bottone value=Invia>

    <font size=1 face=verdana>[b]Opzioni per l'invio[/b]

    <input type=checkbox name=tutti>Invia a tutti.

    *Invia a: [b]"

    while(
    $array mysql_fetch_array($risultato)) { 
    echo
    "<a href=admin.php?funzione=crea_newsletter&cancella=$array[1]>$array[1]</a> - "
    }  
    echo
    "[/b]

    * Se vuoi inviare la newsletter a tutti gli iscritti seleziona l'opzione \"Invia a tutti\", altrimenti tramite il menu a tendina in alto scegli i destinatari e lascia deselezionata l'opzione \"Invia a tutti\".
    </form>"
    ;
    $coda"\n"."\n"."\n"."\n"."\n"."\n"."\n"."messaggio da inserire in coda";

     if(
    $_POST['submit3'] && $_POST['messaggio'] && $_POST['oggetto']) {

        if(
    $_POST['tutti']) {
    $query "SELECT * FROM membri_newsletter";
    $risultato mysql_query($query);

    $query2 "SELECT membro_ID FROM membri_newsletter";
    $risultato2 mysql_query($query2);
    $num mysql_num_rows($risultato2);



    $messaggio_formattato $_POST['messaggio'];

    $mess = <<<EOMESS
    $messaggio_formattato
    EOMESS;

    for(
    $i=0;$i<$num;$i++) {

    $mail mysql_result($risultato$i'mail');
    $nominativo mysql_result($risultato$i'nome');

    $invio mail("$mail""$_POST[oggetto]""$nominativo"."$mess"."$coda""From: $mail_admin");

    }

    if(
    $invio) {
    echo
    "<script>alert('Newsletter inviata con successo');</script>";

    }
     } else {

    $query "SELECT * FROM indirizzi";
    $risultato mysql_query($query);

    $query2 "SELECT indirizzi_ID FROM indirizzi";
    $risultato2 mysql_query($query2);
    $num mysql_num_rows($risultato2);



    $messaggio_formattato $_POST['messaggio'];

    $mess = <<<EOMESS
    $messaggio_formattato
    EOMESS;

    for(
    $i=0;$i<$num;$i++) {
    $mail mysql_result($risultato$i'indirizzi');
    $nominativo mysql_result($risultato$i'nome');

    $invio mail("$mail""$_POST[oggetto]""$nominativo"."$mess"."$coda""From: $mail_admin");

    }

    if(
    $invio) {
    echo
    "<script>alert('Newsletter inviata con successo');</script>";
    $query "TRUNCATE TABLE indirizzi";
    $risultato mysql_query($query);
    }
    }
    }
    }

    switch(
    $_GET['funzione']) {

        case 
    amministrazione:
            
    amministrazione();
        break;
        case 
    crea_newsletter:
            
    crea_newsletter();
        break;
        default:
            
    login();

    lupo

  4. #4
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    è una soluzione poco elegante ma per il momento può andare:


    questo blocco lo devi spostare prima di qualsiasi output, aggiungendo il setcookie:
    Codice PHP:
        if(isset($_POST['submit1'])) {
            
    $db mysql_connect($db_host$db_user$db_password) or die('Errore connessione database');
            
    mysql_select_db($db_name$db) or die('Errore selezione database');
        if((
    $_POST['user']) && ($_POST['pwd'])) {
            
    $query "SELECT admin_ID FROM admin_newsletter WHERE user = '$_POST[user]' AND password = '$_POST[pwd]'";
            
    $risultato mysql_query($query);
            
    $num mysql_num_rows($risultato);

                if(
    $num>0) {
    setcookie('logged',TRUE);

                    
    Header("Location: $file?funzione=crea_newsletter");

                    } else {
                        echo
    "<script>alert('User o password sbagliati.');</script>";
       }
      }
     } 
    e poi prima del "commutatore" metti...

    Codice PHP:
    [...]

    if (!
    $_COOKIE["logged"])
    echo 
    login();
    else 
    // da qui in poi è quello che già c'era...
    switch($_GET['funzione']) {

        case 
    amministrazione:
            
    amministrazione();
        break;
        case 
    crea_newsletter:
            
    crea_newsletter();
        break;
        default:
            
    login();

    fammmi sapere se funge...

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  5. #5
    Utente di HTML.it L'avatar di lupo92
    Registrato dal
    Feb 2004
    Messaggi
    254
    Ho fatto delle prove e funziona grazie.

    Perchè dici che è òpoco elegante?
    lupo

  6. #6
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    xkè si può sempre ricorrere a qualcosa d + avanzato magari strutturato diversamente, ricorrendo a delle sessioni, un log + accurato.. ma per le tue esigenze credo siamo ampiamente nelle richieste...

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  7. #7
    Utente di HTML.it L'avatar di lupo92
    Registrato dal
    Feb 2004
    Messaggi
    254
    lupo

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.