Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    Effettuare una login tramite script php invece che tramite un form POST

    Ciao a tutti!

    Chiedo scusa in anticipo se questo argomento è già stato trattato, ma ho fatto alcune ricerche ma senza alcun risultato utile, quindi mi rivolgo a voi frequentatori del forum.

    La mia domanda è semplice ma la soluzione non credo lo sia altrettanto... E' possibile effettuare una login automatica tramite uno script in php via POST?

    Mi spiego meglio: supponiamo che io mi trovi in una pagina html in cui è presente un form con la login di accesso all'area riservata di un sito. Questo form di login ha due campi, lo username e la password. Normalmente l'utente inserisce il suo username e la sua password, clicca sul pulsante di submit, il browser "confeziona" le informazioni immese dall'utente via POST o GET (a seconda di com'è stato impostato l'attributo "method" del tag "form") e le invia al server, il quale risponde in modo appropriato alla richiesta.

    E' possibile creare uno script php che esegua automaticamente il lavoro di "confezionamento" delle informazioni normalmente svolto dal browser quando si clicca sul pulsante di submit di un form? Sapendo a priori lo username e la password dell'utente e la struttura del form c'è un modo cioè per eseguire una "login automatica" inviando al server i dati relativi alla login opportunamente "confezionati"?

    Spero di essermi spiegato. Grazie in anticipo a chiunque mi potrà aiutare. Ho bisogno infatti di realizzare una piccola applicazione che, tra le altre cose, effettui quanto ho appena chiesto.

    Ciao!

  2. #2
    mhm sinceramente io non ho capito nulla

  3. #3

    Re: Effettuare una login tramite script php invece che tramite un form POST

    Originariamente inviato da ThePearlsMaster
    Sapendo a priori lo username e la password dell'utente
    se conosci a priori username e password, cioè l'utente non deve inserire niente in nessun form di login, allora non devi fare altro che connetterti al database e confrontare quella username e password con quelle presenti nel DB. se coincidono allora l'utente è logato........ qual'è il problema?

  4. #4
    Il problema è che io non ho accesso al database perchè il sistema sul quale devo effettuare la login è esterno.

    In pratica vorrei cercare di fare questo: normalmente si accede a questo sistema esterno inserendo username e password in un form. Io vorrei invece effettuare la login tramite uno script php che in automatico effettua la login al posto mio usando lo username e password noti.

    So che è una cosa insolita... Però dopotutto se ci pensate quando clicchiamo sul pulsante di "submit" di un form il browser invia al server i dati via POST... Io vorrei inviare i dati del form non tramite il browser ma tramite uno script php.

  5. #5
    Utente di HTML.it L'avatar di span
    Registrato dal
    Jan 2004
    Messaggi
    1,644
    sì, con le socket non è difficile.

    ad esempio questa funzione serve per inviare un trackback, ma fare un loging è la stessa cosa:

    Codice PHP:
    function send_ping($tb_url$pb_url$pb_title=''$pb_excerpt=''$pb_blog_name=''$charset='utf-8'){
      
    $url parse_url($tb_url);
      
    $host $url['host'];
      
    $pb_id $url['path'] ."?" .$url['query'];
      
    $post_data "url=".urlencode($pb_url)
                 .
    "&title=".urlencode($pb_title)
                 .
    "&excerpt=".urlencode($pb_excerpt)
                 .
    "&blog_name=".urlencode($pb_blog_name);

      
    $sk fsockopen($host80$errno$errstr30);
      if(!
    $sk) echo "Errore $errno$errstr";
      else{
        
    $headers "POST $pb_id HTTP/1.0\r\n";
        
    $headers .= "Host: $host\r\n";
        
    $headers .= "User-Agent: LIT TrackBack lib\r\n";
        
    $headers .= "Content-Type: application/x-www-form-urlencoded; charset=$charset\r\n";
        
    $headers .= "Content-Length: ".strlen($post_data)."\r\n\r\n";

        
    fputs($sk$headers.$post_data);
        while (!
    feof($sk)):
              
    $resp .= fgets($sk);
        endwhile;
        
    fclose($sk);
        return 
    $resp;
      }


  6. #6
    Ottima idea, span! Grazie!

    Ma dimmi... sapresti darmi qualche informazione in più su come impostare i vari header HTTP per "simulare" un form di login? C'è un qualche manuale e/o documentazione che spiega bene come usare gli header HTTP per queste cose? O magari una classe già pronta per simulare il form di login (sarebbe il massimo)?

    Grazie!

  7. #7
    Utente di HTML.it L'avatar di span
    Registrato dal
    Jan 2004
    Messaggi
    1,644
    I possibili header penso tu li possa trovare nel protocollo HTTP 1.0 e 1.1

    Comunque per inviare un form come questo:

    codice:
    <form method=post action=www.sito.it/dir/pagina.php?act=loging>
    <input type=text name=username />
    <input type=password name=password />
    </form>
    Il codice è qualcosa tipo questo:

    Codice PHP:
    // HTTP body
    $body urlencode("username=il mio nome&password=la mia password");

    // HTTP headers
    $header "POST /dir/pagina.php?act=loging HTTP/1.0\r\n";
    $header .= "Host: [url]www.sito.it\r\n[/url]";
    $header .= "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n";
    $header .= "Content-Length: ".strlen($body)."\r\n";
    $header .= "\r\n";

    // Esegue il loging (cioè una richiesta HTTP POST)
    $sk fsockopen('www.sito.it'80);
    fputs($sk$headers.$post_data);

    // Ricevere la risposta
    while (!feof($sk)):
          
    $resp .= fgets($sk);
    endwhile;

    // Schiude la connessione
    fclose($sk);

    // Stampa la risposta
    echo $resp
    Una classe è Snoopy.

  8. #8
    Utente di HTML.it L'avatar di span
    Registrato dal
    Jan 2004
    Messaggi
    1,644
    l'header "host" è corretto automaticamente dal forum, ci andrebbe solo l'indirizzo dell'host a cui ti vuoi connettere

  9. #9
    Grazie tantissimo, span!

    Sia il codice che mi hai postato sia la classe Snoopy che mi hai consigliato funzionano alla grande! Riesco a loggarmi correttamente.

    Però ora è sorto un altro problema: mi loggo al sistema, come ho detto sopra, e fin qui tutto ok. Però appena clicco su un link ecco che mi sloggo di nuovo. Ho fatto alcune prove più approfondite ed ho notato che l'id di sessione cambia... Ed in effetti è logico, perchè la login l'ho effettuata con il "browser Snoopy", mentre il link l'ho cliccato col mio normale browser, Firefox.

    A questo punto mi chiedo se c'è un modo per risolvere anche quest'ultimo problema...

  10. #10
    Ciao a tutti, approfitto di questo thread per chiedervi una cosa...

    Io ho dovuto fare la stessa identica cosa di ThePearlsMaster, ma adesso mi si pone un problema: tutto funziona magnificamente con Snoopy
    Solo che una delle variabili:

    $submit_vars["entered_name"] = "nome";

    che viene messa dopo il login (prima fa il login, poi esegue questa azione)
    dovrebbe recuperarla in automatico dalla pagina che è il modulo che Snoopy simula di compilare...

    Allora, in pratica mi deve caricare una pagina con ID sempre progressivo, esempio:

    pagina.php?ID=1 , che poi diventa 2, che poi diventa 3 (che è anche l'azione del modulo)

    ogni pagina mi restituisce il risultato di quell'id come

    name="entered_name" value="nome" all'interno, però, della pagina html.

    In pratica Snoopy dovrebbe ogni volta:

    - Fare il login ( e qui ci siamo)
    - Caricare il modulo e assegnare alla variabile $nome il contenuto di value="", che si trova all'interno del codice HTML della pagina, vicino a name="entered_name"... (questo mi serve sapere come fare)
    - Inviare il modulo ( e qui ci siamo)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.