PROCÉDURE EnvoyerSMS_OVH(sDestinataire est une chaîne, sMessage est une chaîne) : booléen
// ---- Configuration (à renseigner) ----
sCompte est une chaîne = "Votre Sign ON" // votre compte SMS OVH
sLogin est une chaîne = "Utilisateur" // utilisateur créé dans le manager
sMotDePasse est une chaîne = "Mot de passe" // Mot de passe du Sender
sExpediteur est une chaîne = "Sender" // Sender validé (nom <=11 car. ou numéro)
// ---- Construction de l'URL (API HTTP2SMS) ----
// noStop=1 : SMS transactionnel (pas de mention STOP) - interdit pour du marketing
// contentType=application/json : réponse en JSON pour analyse du statut
sURL est une chaîne = "https://www.ovh.com/cgi-bin/sms/http2sms.cgi?" + ...
"account=" + URLEncode(sCompte) + ...
"&login=" + URLEncode(sLogin) + ...
"&password=" + URLEncode(sMotDePasse) + ...
"&from=" + URLEncode(sExpediteur) + ...
"&to=" + URLEncode(SansEspace(sDestinataire)) + ...
"&message=" + URLEncode(sMessage) + ...
"&noStop=1" + ...
"&contentType=application/json"
// ---- Envoi de la requête HTTP GET ----
req est un httpRequête
req.URL = sURL
req.Méthode = httpGet
rep est un httpRéponse = HTTPEnvoie(req)
SI rep.CodeÉtat < 200 OU rep.CodeÉtat >= 300 ALORS
Trace("Erreur HTTP OVH [" + rep.CodeÉtat + "] : " + rep.Contenu)
RENVOYER Faux
FIN
// ---- Analyse de la réponse JSON d'OVH ----
// status = 100 => SMS accepté/envoyé ; toute autre valeur = erreur
vRep est un Variant = JSONVersVariant(rep.Contenu)
SI vRep.status = 100 ALORS
WaitToast("SMS envoyé avec succès")
RENVOYER Vrai
SINON
WaitToast("Erreur SMS OVH [status " + vRep.status + "] : " + vRep.message)
RENVOYER Faux
FIN
Archives par mois : août 2026
Webdev : compresser une image au chargement
A placer dans un champ Upload
//A chaque modification de la liste des fichiers sélectionnés
sFormatAcceptés est une chaîne = gsFormatAutorisé
gnTaille est un entier = Taille(UPL_Upload2)
SI gnTaille > 1000000 ALORS
Info("La taille du fichier dépasse 1.000.000 octets")
SAI_Image = ""
RETOUR
FIN
SAI_Image = UPL_Upload2
SI SAI_Image > "" ALORS
SI AJAXExécute(RenvoieExtension,SAI_Image,sFormatAcceptés) = Faux ALORS
SAI_Image = ""
Info("Les formats autorisés sont : " + sFormatAcceptés)
RETOUR
SINON
IMG_Jauge..Visible = Vrai
UPL_Upload2..Etat = Grisé
UploadLance(UPL_Upload2,SAI_Image)
FIN
SINON
RETOUR
FIN
// Progression du Transfert
sFichier est une chaîne = UploadFichierEnCours(MoiMême)
//Réception des fichiers Uploadés
sNomFichier est une chaîne = UploadNomFichier(MoiMême,Faux,1)
sExtension est une chaîne = fExtraitChemin(sNomFichier,fExtension)
SI ChaîneOccurrence(gsFormatAutorisé,sExtension) = 0 ALORS
Info("Veuillez charger une photo."+RC+"("+gsFormatAutorisé+")")
RETOUR
FIN
// Début
sFichierSource est une chaîne = UPL_Upload2..Valeur // chemin du fichier temporaire sur le serveur
sFichierDest est une chaîne = fRepDonnées() + fExtraitChemin(sFichierSource, fFichier + fExtension)
imgPhoto est une Image
imgPhoto = sFichierSource // charge l'image en mémoire
nPoidsSourceKo est un entier = fTaille(sFichierSource) / 1024
nQualité est un entier
nLargeur est un entier
// 1) Qualité de départ choisie selon le poids d'origine
SELON nPoidsSourceKo
CAS 0 À 100
nQualité = 50
nLargeur = 1024
CAS 100 À 500
nQualité = 30
nLargeur = 768
CAS 501 À 1500
nQualité = 20
nLargeur = 512
CAS > 1500
nQualité = 15
nLargeur = 512
FIN
// 1) Réduire les dimensions (largeur max 1024 px, hauteur proportionnelle)
dRedimensionne(imgPhoto, 512, 0)
// 2) Sauver en JPEG avec une qualité réduite (75 = bon compromis poids/qualité)
SI PAS dSauveImageJPEG(imgPhoto, sFichierDest, nQualité) ALORS
Erreur("Échec de la sauvegarde : " + ErreurInfo())
FIN
// Uploader le fichier dans le répertoire _WEB
sNomFichierCopié est une chaîne = UploadCopieFichier(MoiMême, fRepDonnées(), imgPhoto,1)
IMG_Photo = sFichierDest
HSupprimeTout(TransfertPhoto)
HAjoute(TransfertPhoto)
TransfertPhoto.Nom = sNomFichierCopié
TransfertPhoto.Description = sNomFichierCopié
HAttacheMémo(TransfertPhoto,Image,sFichierDest,hMémoImg)
HModifie(TransfertPhoto)
//supprimer les fichiers temporaires
SI PAS fSupprime(sFichierSource) ALORS
Erreur("Échec de la suppression du fichier source : " + ErreurInfo())
FIN
SI PAS fSupprime(sFichierDest) ALORS
Erreur("Échec de la suppression du fichier destination : " + ErreurInfo())
FIN
IMG_Jauge..Visible = Faux
gbOK = Vrai
Webdev : sortie du programme pour inactivité prolongée
//Dans le code de démarrage du projet
// Stocker la dernière activité de l'utilisateur dans la session WebDev
gdhLastAction est une DateHeure <synchronisé navigateur> = DateHeureSys()
gdhLastActionAlive est une DateHeure <synchronisé navigateur> = DateHeureSys()
gnIterationDéconnexion est un entier <synchronisé navigateur> = 0
SessionPrologue(IAmAlive)
//Procédures Navigateur
PROCÉDURE IsAlive()
gdhLastAction = DateHeureSys()
gnDifférence est un numérique = gdhLastAction - gdhLastActionAlive
SI gnDifférence > 180000 ALORS
gnIterationDéconnexion ++
SI gnIterationDéconnexion <= 2
WaitToast("Session inactive" + RC + "La session va être déconnectée...")
FIN
FIN
SI gnDifférence > 200000
AJAXExécute(AfficheFinProgramme)
FIN
RENVOYER Vrai
PROCÉDURE StartTrackerIsAlive() // à placer à chaque chargement de page
gdhLastActionAlive = DateHeureSys()
Timer(IsAlive,10s)
