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']), 0, 160);
$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 è possibile scrivere il file in $FileDir");
}
chmod($FilePath, 0644);
fwrite($File, $KeyMd5);
fwrite($File, "\r\n");
fwrite($File, strftime('%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!