Menu

Demande d'explication

Messages postés
1
Date d'inscription
samedi 9 mars 2019
Dernière intervention
9 mars 2019
-
Bonjour les ami(e)s,
je dois ecrire un programme d'envoie d'sms en masse.
Les numeros sont uploadés à partir d'un formulaire dans un fichier .txt, maintenant si l'un de ces numeros appartient à un utilisateur qui est dans notre base de donnée, le slode de celui-ci doit etre incrementé de 10f.
Mon problème est que les numeros envoyés du fichier reçoivent les sms mais le solde ne s'incremente pas.
vraiment j'ai besoin de votre aide, si non je risque de passer à la casserole.
Voici mon code :
<?php
session_start();
    if(isset($_POST['envoyer']) And !empty($_POST['nombresms']) And !empty($_FILES['destinataire']) And $_FILES['destinataire']['error'] == 0 And !empty($_POST['expediteur']) And !empty($_POST['message'])){
        
        // initialization of the necessary variables for the program structure
        //initialisation des variable necessaire pour la structure du programme
        $compteurSms = 0;
        $smsErreur = 0;
        $smsSucces = 0;

        // receive the number of messages requested by the client
        //reception du nombre de message demandé par le client

        $nombreSms = strip_tags($_POST['nombresms']);
        $nombreSms = htmlspecialchars($nombreSms);

        // receive the recipient's number
        //reception du numero du destinataire

        $expediteur = strip_tags($_POST['expediteur']);
        $expediteur = htmlspecialchars($expediteur);

        // receipt and control of the file containing the customer's numbers, not complete control
        //recption et controle du fichier contenant les numeros du client, controle pas au complet

        if($_FILES['destinataire']['size'] < 2097152){
            $info_fichier = pathinfo($_FILES['destinataire']['name']);
            $extension_upload = $info_fichier['extension'];
            $extension_autorises = array('txt');
            if(in_array($extension_upload, $extension_autorises)){
                $cart = "Joseph";
                $destination = "Papyrus/".$cart."_".$info_fichier.".".$extension_upload;
                $deplacement = move_uploaded_file($_FILES['destinataire']['tmp_name'], $destination);

                // read the file to retrieve the numbers one by one!
                //lecture du fichier pour recuperer les numeros une à une !

                $ouverture = fopen($destination, 'r+');
                while($lecture = fgets($ouverture)){
                    $char ="+";
                    $prefix = 225;
                    $lecture = $char.$prefix.$lecture;

                    // infobip control
                    //infobip control
                    $to = $lecture;
                    $text = $_POST['message'];
                    $text = strip_tags($text);
                    $text = htmlspecialchars($text);
                
                    $username = "xxxxxxxx";
                    $password = "xxxxxxxx";
                
                    $from = $expediteur;
                    $messageId = "xxxxxxxxxxx";
                    $postUrl = "https://83k51.api.infobip.com/sms/1/text/advanced";
                
                    // creation of SMS sending object 
                    // creation d'objet d'envoie d'sms
                    $destination = array("messageId" => $messageId,
                    "to" => $to);
                
                    $message = array("from" => $from,
                    "destinations" => array($destination),
                    "text" => $text);
                
                    $postData = array("messages" => array($message));
                    $postDataJson = json_encode($postData);
                
                    $ch = curl_init();
                    $header = array("Content-Type:application/json", "Accept:application/json");
                
                    curl_setopt($ch, CURLOPT_URL, $postUrl);
                    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
                    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
                    curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
                    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
                    curl_setopt($ch, CURLOPT_MAXREDIRS, 2);
                    curl_setopt($ch, CURLOPT_POST, 1);
                    curl_setopt($ch, CURLOPT_POSTFIELDS, $postDataJson);
                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        
                    // response of the POST request
                    $response = curl_exec($ch);
                    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                    $responseBody = json_decode($response);
                    curl_close($ch);

                    if ($httpCode >= 200 && $httpCode < 300) {
                        $messages = $responseBody->messages;
       
                        $compteurSms = $compteurSms + 1;
                        $smsSucces = $smsSucces + 1;
                        $compte = 0;

                        // selection of the number in the database
                        //selection du numero dans la base de donnee

                        $requete = $base->query('SELECT * FROM clients WHERE Numero = "'.$num.'" ');
                        $conteneur = $requete->fetch();

                        // check if the request is not null
                        //verification si la requete n'est pas null

                        if($conteneur['Pseudo'] != NULL){
                           $temp_user = $conteneur['Pseudo'];
                           $compte = $conteneur['Solde'] + 10;

                           // update user account
                           //mise a jour du compte user
                           $order = $base->prepare('UPDATE clients SET Solde = :solde WHERE Pseudo = "'.$temp_user.'"');
                           $order ->execute(array(
                               'solde' => $compte
                           ));
                        }
                   } 
                   else {
                       $compteurSms = $compteurSms + 1;
                       $smsErreur = $smsErreur + 1;
                   }
                }
                fclose($ouverture);
                $_SESSION['totalSms'] = $nombreSms;
                $_SESSION['smsSucces'] = $smsSucces;
                $_SESSION['smsErreur'] = $smsErreur;
                xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
            }
            else{
                xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
            }
        }
        else{
            xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        }
    }
    else{
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
    }
?>


EDIT : Ajout des balises de code
Afficher la suite 

Votre réponse

2 réponses

Messages postés
24869
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 mars 2019
1887
0
Merci
Bonjour,

Commence par gérer correctement les éventuelles erreurs au niveau des requêtes
Pour ça, applique ceci : http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

Je te conseille également de suivre les recommandations présentes ici :
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Reviens nous voir une fois ces conseils appliqués avec ton code modifié si ton souci persiste.

PS: N'hésites pas à mettre des echo dans ton code pour essayer de voir si tu passes bien dans tes IF et voir le contenu de tes variables correspond bien à ce que tu attends....




Merci pour la reponse, je vais menager mon code et je verrai le resultat !
Commenter la réponse de jordane45
Messages postés
7506
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
9 mars 2019
446
0
Merci
bonjour, n'est-il pas plus simple de faire
UPDATE clients SET Solde = Solde + 10 WHERE ...
?
Commenter la réponse de yg_be