Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Personalizzare il servizio SMS (Target) Aruba

    Ciao a tutti,
    premetto che ho cercato su questo forum e su google senza trovare risposta al mio problema.
    Mi comincio a scusare per la lunghezza del messaggio: spero che qualcuno di voi abbia già incontrato il mio stesso problema e lo abbia risolto.


    Ho acquistato il servizio SMS di Aruba per l'invio di messaggi dal mio sito e sto cercando di personalizzare le pagine php per meglio integrarle nel layout del sito; di fatto ho riscritto completamente il codice, prendendo spunto dai sorgenti di aruba e levando chili di roba che IMHO non serviva.

    Il codice che ti da aruba funziona in questo modo (mi riferisco al codice del target Professional):
    1) Il client visualizza un form con il testo del SMS e la scelta del destinatario: una volta riempito lo spedice a rubricainvio.php che manda al client la finestra di riepilogo con un tasto per confermare l'invio.
    2)Quando l'utente schiaccia il pulsante (che è un <input type='image' /> ) il browser va a richiamare sms.aruba.it/Secure_inviasmsdomini.asp alla quale manda i seguenti parametri

    RandID - Un codice di sessione
    RiepilogoFatto - SI
    UrlCliente - La pagina da cui si manda l'sms
    IDCodSMS - L'account sms da cui sottrarre il credito
    smstipodest - 20 , destinatari multipli
    smsnumdest - i numeri da raggiungere divisi da |
    smsmittente - Una stringa che dovrebbe apparire come mittente
    smsprefcell - inutilizzato in caso di invio multiplo
    smsdestinatario - inutilizzato in caso di invio multiplo
    PathReferer - La pagina da richiamare una volta effettuato l'invio

    (Speriamo che questa descrizione sia utile anche a qualcun altro..)

    3) a questo punto il browser richiama la pagina di aruba che invia il messaggio e redireziona il client sulla pagina PathReferer con dei parametri che indicano l'esito dell'invio.

    In realtà tra questi passaggi ci sono diversi controlli di sicurezza, ma l'unico veramente necessario è la creazione di un file di autorizzazione per ogni invio (identificato dal RandID), che il server aruba verifica prima dell'invio e che va eliminato successivamente.


    La struttura del nuovo codice è molto più semplice e pulita: una pagina form.php che contiene il form (ma và ) in cui si sceglie il/i destinatari e si inserisce il testo del SMS, ed una pagina send.php che valida i dati del form, prepara la richiesta per aruba e redireziona il client che la esegue.

    Il nuovo codice funziona, nel senso che invia regolarmente gli sms, ma dopo l'invio non richiama la pagina di PathReferer ma visualizza un bel 404 sul server di aruba
    Oltre alla bruttezza dell'errore, che cmq potrei evitare chiudendo la finestra con JS, se non richiama la mia pagina non posso sapere qual'è l'esito dell'invio

    Sulla Knowledge base di Aruba c'è scritto che loro danno assistenza solo se utilizzi il loro codice..

    Idee ?

    Quello che il mio codice non fa rispetto a quello di aruba è andare a settare dei cookie, che comunque sono associati al mio dominio e quindi la pagina di aruba non legge. Non riesco ad immaginare come questo possa andare a bloccare il corretto funzionamento.

    Valerio

  2. #2

    source code

    Invio l'estratto del codice sorgente, nella speranza che possa essere utile a qualcun'altro (ad esempio a Max )

    form.php:
    Codice PHP:
    <?php

    /**CODICE DI INIZIALIZZAZIONE**/

    $text =
        
    '
        <script language="JavaScript" src="sms.js" ></script>
        <form 
            method="POST" 
            action="inviaSMS.php" 
            Name="FormSMS" >
            <input type="hidden" name="operazione" value="invio"/>
            Testo del messaggio:

            <textarea name="testoSMS" cols="32" rows="5" onkeyup="javascript:messcontacar();" onchange="javascript:messcontacar();" ></textarea>
            <input name="caratteriDisponibili" type="text" value="160" size="3" disabled="disabled" />
            

            

            Numero telefonico: <input name="destSingolo" type="text" />

            

            Associati:

            <select name="destElencoSoci[]" multiple="multiple" size=10 >
        '
    ;

    /**CODICE PER PRENDERE LA LISTA DEI NUMERI DI TELEFONO**/
        
        
    while($line $sql->db_Fetch()) {

            
    $text .= "<option value=\"{$line[IDRubrica]}\">{$line[cognome]} {$line[nome]}</option>\n";

        }

        
    $text .='</select>


    /**altro html**/                


    <input type="button" value="Invia SMS" onclick="javascript: sms_Valid()" />
            </form>'
    ;
            
        echo 
    $text;
        
    /**altro html**/
    ?>
    La pagina non contiene davvero nulla di speciale: una lista di destinatari da selezionare, un campo per il testo del messaggio, un piccolo JS che conta i caratteri mancanti ed il tasto invia.

    L'invio lo fa send.php:
    Codice PHP:
    <?php

    /**CODICE DI INIZIALIZZAZIONE**/


    /*parametri di configurazione*****************/
        
        
    $KeyMd5 "***************************";
        
    $IDCodSMS = *****;
        
    $FileDir "./";
        
    $FileExtension ".smstarget.txt";
    /*********************************************/





    /////////////////INIZIO////////////////////////////
    if( $_REQUEST['operazione'] == 'invio' )
    {

        
    //1: Controlliamo se sei autorizzato!////////////////
    /**CODICE DI CONTROLLO AUTORIZZAZIONE**/

        //2: verifichiamo l'input /////////////////////////////
        
    {
    /**CODICE DI VERIFICA INPUT**/        
        
    }//fine  verifica parametri
        
        //Impostazione variabili e cookies per il server
        
    {
            
    $smsmittente 'NOME_CHE_DOVREBBE_APPARIRE_COME_MITTENTE_DI_SMS' ;
        
            
    $smstesto substr(stripslashes($_REQUEST['testoSMS']), 0160);
        
            
    $smstipodest 20//destinatari da lista
            
            
    if( $_REQUEST['destSingolo'] ) // Il numero di telefono singolo
            
    {
                if( 
    $_REQUEST['destSingolo'][0] == '+' )
                    
    $smsnumdest substr$_REQUEST['destSingolo'] , 1) . "|";
                else
                    
    $smsnumdest "39"$_REQUEST['destSingolo']."|"
            }
            
            
    //i numeri dall'elenco degli iscritti    
            
    foreach ($_REQUEST['destElencoSoci'] as $k)
            {
                
                
    /**CODICE CHE RECUPERA I CELLULARI DEI DESTINATARI**/
                
    if( $line $sql -> db_Fetch() )
                {
                    if( 
    $line['numcell'][0] == '+' )
                        
    $smsnumdest .= substr$line['numcell'] , 1) . "|";
                    else
                        
    $smsnumdest .= "39"$line['numcell'] ."|";
                }
                    
            }
            

            if( 
    $smsnumdest == '' )
            {
                
    /**echo codice errore**/
                
    exit(0);
            }
            else 
    $smsnumdest substr($smsnumdest,0,strlen($smsnumdest)-1);    
            
            

            
    $smscosto 0;
            
            
    /*
            setcookie('smstipodest', $smstipodest, 0);

            setcookie('smsnumdest', $smsnumdest, 0);
            setcookie('smscosto', $smscosto, 0);
        
        // Non dovrebbero servire per l'invio di gruppo 

        setcookie('smsprefcell', $smsprefcell, 0); 

        setcookie('smsdestinatario', $smsdestinatario, 0);
        

            //stringa per indicare il destinatario:
            //abbastanza inutile

            setcookie('smsshowdest', $smsshowdest, 0);

        
            setcookie('smstesto', $smstesto, 0);

            setcookie('smsmittente', $smsmittente, 0);
        */
            /* genera ora il randID da associare a questa sessione */
            
    $RandID MakeRandID();
        
            
    /* scrive il file contenente la Key */
            
    $FilePath $FileDir "/" $RandID $FileExtension;
            if(! 
    $File fopen($FilePath'w')) {
                
    html_error("Non &egrave; possibile scrivere il file in $FileDir");
            }
            
    chmod($FilePath0644);
            
    fwrite($File$KeyMd5);
            
    fwrite($File"\r\n");
            
    fwrite($Filestrftime('%d/%m/%Y %H.%M.%S'time())); // 09/07/2004 11.48.25
            
    fclose($File);
        
            
    /* setta il cookie con il RandID */
            //setcookie($RandID, "2", 0);
        
    }//fine imposta variabili

        //(finalmente) redirezioniamo il client su server aruba per mandare il messaggio
        
    {
            
    $paginaRedirect =
                
    '
                <html>
                <body>
                    <form method="POST" action="http://sms.aruba.it/Secure_inviasmsdomini.asp" name="formFinale" >
                        <input type="hidden" name="smstesto" value="'
    .$smstesto.'" />
                        <input type="hidden" name="RandID" value="'
    .$RandID.'"/>
                        <input type="hidden" name="RiepilogoFatto" value="SI"/>
                        <input type="hidden" name="UrlCliente" value="http://www.miosito.................../form.php"/>
                        <input type="hidden" name="IDCodSMS" value="'
    .$IDCodSMS.'"/>
                        <input type="hidden" name="smstipodest" value="20"/>
                        <input type="hidden" name="smsnumdest" value="'
    .$smsnumdest.'"/>
                        <input type="hidden" name="smsmittente" value="'
    .$smsmittente.'" />
                        <input type="hidden" name="smsprefcell" value="" />
                        <input type="hidden" name="smsdestinatario" value="" />
                        <input type="hidden" name="PathReferer" value="www.miosito......../NoDataPro.php"/>
                    </form>
                    <script language="JavaScript" >
                        
                        /*document.formFinale.PathReferer.value = document.location.host + document.location.pathname*/
                        document.formFinale.submit();
                    </script>
                </body></html>
                '
    ;
                echo 
    $paginaRedirect;
                exit(
    0);
        }
    }
    else 
    // non devo mandare un messaggio, devo mostrare il resoconto invio (non funziona!)
    {
        
    //probabilmente ci ha contattato aruba
        
        
    foreach( $_REQUEST as $k => $v )
            echo 
    $k' = '$v.'
    \n'
    ;
        
        exit(
    0);
    }
    ?>
    $KeyMD5 e $IDCodSMS vanno presi direttamente dal codice di Aruba perchè identificano il vostro contratto.
    Quando il codice esegue l'else, non invia l'sms ma dovrebbe ricevere come parametri della richiesta i dati per capire com'è andato l'invio.
    Come ho detto nel precedente post, l'invio dell'SMS funziona ma quando aruba dovrebbe redirezionare il client di nuovo sulla pagina.... non redireziona una cippa!

  3. #3
    Ciao Valerio.
    Max l'ha provato... effettivamente il tuo codice consente l'invio e restituisce l'errore.

    Ho provato a rinominare la pagina ProxyPage.php come vuole Aruba, ma restituisce la pagina di errore:

    http: // sms . aruba . it /smssender/GenericErrorPage.htm?aspxerrorpath= /SmsSender/Default.aspx


    Ho pure notato, purtroppo, che:

    1. non funziona l'invio multiplo nonostante abbia scritto i numeri separati da "|":
    $smsnumdest = '39<PREF><NUM>'.'|'.'39<PREF><NUM>'.'|';

    2. facendo una chiamata da php con CURL alla pagina del form non invia nulla!


    bloccati? :-(
    Aruba ti ha fatto sapere qualcosa?

  4. #4
    ciao ragazzi,

    ho esattamente lo stesso problema, qualcuno è riuscito a districardi meglio?

    Ciao!

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ciao. Evitiamo per cortesia di riportare a galla discussioni così vecchie.
    Aprine una tua evitando di fare nomi di hoster, pena la chiusura della stessa.

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.