Acest site foloseşte cookies. Continuarea navigării pe acest site reprezintă acordul dumneavoastră pentru folosirea cookie-urilor. Aflaţi mai multe sau Inchideţi notificarea
Intrebari Frecvente - Despre noi - Parteneri - Platforma mobila de SMS marketing - Blog - Contact / Support    
<?php

// ----------------------------------------------------------------------------------------------------------
// 
//    Exemplu minimal pentru trimiterea de SMS-uri criptate 
//    Serviciul SMS Gateway
//    Versiunea 1.1 / 12.04.2010
//    Distribuit gratuit    
//
//  CERINTE MINIME SERVER: 
//        - Biblioteca libcrypt > 2.4.x
//
//    CERINTE MINIME PHP:    
//        - Modulul PHP mcrypt (http://www.php.net/manual/en/book.mcrypt.php)
//        - PHP >= 5.1.2 (Pentru functia HASH SHA 512)
//
// ----------------------------------------------------------------------------------------------------------

// ----------------------------------------------------------------------------------------------------------
//   Configurare SMS Gateway  
// ----------------------------------------------------------------------------------------------------------

// ----------------------------------------------------------------------------------------------------------
//   Algoritm pentru criptare
//    - algoritmi acceptati (case sensitive): 
//      MCRYPT_3DES, MCRYPT_ARCFOUR_IV (libmcrypt > 2.4.x only), MCRYPT_ARCFOUR (libmcrypt > 2.4.x only)
//      MCRYPT_BLOWFISH, MCRYPT_CAST_128, MCRYPT_CAST_256, MCRYPT_CRYPT, MCRYPT_DES, MCRYPT_ENIGMA 
//        (libmcrypt > 2.4.x only, alias for MCRYPT_CRYPT), MCRYPT_GOST
//      MCRYPT_IDEA (non-free), MCRYPT_LOKI97 (libmcrypt > 2.4.x only), MCRYPT_MARS (libmcrypt > 2.4.x only, 
//      non-free), MCRYPT_PANAMA (libmcrypt > 2.4.x only), MCRYPT_RIJNDAEL_128 (libmcrypt > 2.4.x only)
//      MCRYPT_RIJNDAEL_192 (libmcrypt > 2.4.x only), MCRYPT_RIJNDAEL_256 (libmcrypt > 2.4.x only), 
//      MCRYPT_RC2, MCRYPT_RC6 (libmcrypt > 2.4.x only), MCRYPT_SAFER64, MCRYPT_SAFER128, MCRYPT_SAFERPLUS 
//        (libmcrypt > 2.4.x only), MCRYPT_SERPENT(libmcrypt > 2.4.x only), MCRYPT_SKIPJACK 
//        (libmcrypt > 2.4.x only), MCRYPT_THREEWAY, MCRYPT_TRIPLEDES (libmcrypt > 2.4.x only), MCRYPT_WAKE 
//        (libmcrypt > 2.4.x only), MCRYPT_XTEA (libmcrypt > 2.4.x only)
// ----------------------------------------------------------------------------------------------------------
$cipher MCRYPT_TRIPLEDES;                            // Inlocuiti cu algoritmul ales si salvat in contul
                                                    // dumneavoastra de utilizator de pe SMSLink.ro pentru
                                                    // acel Connection ID

$fields["connection_id"] = "";                         // Completati cu SMS Gateway Connection ID
$fields["password"] = "";                            // Completati cu parola pentru Connection ID
$fields["to"] = "0723178275";                        // Completati cu numarul de mobil al destinatarului
$fields["message"] = "test encrypted message";        // Completati cu mesajul text ce urmeaza a fi trimis
$fields["https"] = false;                            // Protocolul poate fi HTTP sau HTTPS

// ----------------------------------------------------------------------------------------------------------
//   Incepe procedura de criptare a datelor care vor fi transmise catre SMS Gateway
//    
//     Specificatii:
//        - Cheia generata este valoarea hash SHA 512 a parolei text trunchiata la maximul cheii acceptate de
//          algoritmul ales.
//        - Parola, destinatarul si mesajul sunt trimise encryptat cu algoritmul ales si cheia generata
// ----------------------------------------------------------------------------------------------------------
function urlsafe_b64encode($string)
{
      
$data base64_encode($string);
     
$data str_replace(array('+''/''='), array('-''_''.'), $data);
     
      return 
$data;
      
}

$iv mcrypt_create_iv(mcrypt_get_block_size($cipherMCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM);
$key substr(hash("sha512"$fields["password"]), 0mcrypt_get_key_size($cipher"cbc"));
$cipher mcrypt_module_open($cipher'''cbc''');

$encrypted = array(
                
=> "password"
                
=> "to"
                
=> "message"
                
            
);

mcrypt_generic_init($cipher$key$iv);

foreach (
$encrypted as $id => $value)
    
$fields[$value] = urlsafe_b64encode(mcrypt_generic($cipher$fields[$value]));
    
mcrypt_generic_deinit($cipher);

$link = (($fields["https"] == false) ? "http://www." "https://secure.").
        
"smslink.ro/sms/gateway/communicate/?".
        
"connection_id=".$fields["connection_id"]."&".
        
"password=".$fields["password"]."&".
        
"to=".$fields["to"]."&".
        
"message=".$fields["message"]."&".
        
"iv=".urlsafe_b64encode($iv);
// ----------------------------------------------------------------------------------------------------------

// ----------------------------------------------------------------------------------------------------------
//   Pasul 1 
//       - Apelam SMS Gateway cu parametrii criptati
// ----------------------------------------------------------------------------------------------------------
$content file_get_contents($link);

// ----------------------------------------------------------------------------------------------------------
//   Pasul 2
//     - Interpretam rezultatul pentru a avea acces la tot continutul acestuia si a putea intelege 
//         rezultatul mesajului trimis spre SMS Gateway
//
//       Rezultatul transmis de SMS Gateway va fi intotdeauna de forma urmatoare:
//       string Nivel;int ID Rezultat;string Mesaj;string[optional] Variabile
// ----------------------------------------------------------------------------------------------------------

// ----------------------------------------------------------------------------------------------------------
//   Pasul 2.1
//     - Extragem din rezultat toate variabilele separate prin punct si virgula 
// ----------------------------------------------------------------------------------------------------------
list($level$id$response$variabiles) = explode(";"$content);

// ----------------------------------------------------------------------------------------------------------
//   Pasul 2.2
//     - Verificam daca mesajul trimis a fost transmis cu succes prin compararea Nivelului si ID Rezultat
// ----------------------------------------------------------------------------------------------------------
//   Daca mesajul este transmis atunci Nivelul va fi MESSAGE si ID- rezultat va avea valoarea numerica 1    
// ----------------------------------------------------------------------------------------------------------
if (($level == "MESSAGE") and ($id == 1))
{        
    
// ------------------------------------------------------------------------------------------------------
    //   Variabilele optionale transmise optional sunt separate prin virgula si vor avea forma urmatoare:
    //     mixed Variabila 1,mixed Variabila 2 ... mixed Variabila 3                
    // ------------------------------------------------------------------------------------------------------
    
$variabiles explode(","$variabiles);                    
    
    
// ------------------------------------------------------------------------------------------------------
    //   Extragem ID-ul Mesajului alocat de gateway pentru a il salva pentru utilizare ulterioara. 
    //   Message ID va fi intotdeauna prima variabila trimisa, restul fiind explicate complet in 
    //     documentatia de pe site. 
    // ------------------------------------------------------------------------------------------------------
    
$message_id $variabiles[0];    
    
    
// ------------------------------------------------------------------------------------------------------
    //   Pasul 3
    //     - Afisam mesajul de confirmare si afisam Message ID-ul alocat
    // ------------------------------------------------------------------------------------------------------
    
echo "Mesajul a fost trimis si are ID-ul ".$message_id."!";
    
}
else
{
    if (
$level == "ERROR")
    {
        
// --------------------------------------------------------------------------------------------------
        //   Pasul 3
        //     - Afisam mesajul de eroare si afisam ID-ul erorii si descrierea
        // --------------------------------------------------------------------------------------------------
        
echo "A intervenit eroarea ID ".$id.", Descriere ".$response;
        
    }
    
}

?>