Retour au site
Connexion : S'inscrire

12 messages
Filtrer ok

Perte des informations lors d'une erreur (Solutionné)

Un expert informatique vous aide immédiatement par téléphone.
Avant toute chose, bonjour

Donc voila mon problème, j'ai créé un petit formulaire php dans le but d'envoyer des sms au sein de mon entreprise via nagios, mais un petit problème surgit, lorsqu'un numéro de téléphone n'est pas valide, le message que l'on à precedement tapé disparaît, je voudrais pouvoir conserver le texte malgré l'erreur de saisie, pour pas que l'utilisateur est de nouveau a retapé son texte...


Voici mon code :

<html>
<head>
<script type="text/javascript">
var ns6=document.getElementById&&!document.all

function restrictinput(maxlength,e,placeholder){
if (window.event&&event.srcElement.value.length>=maxlength)
return false
else if (e.target&&e.target==eval(placeholder)&&e.target.value.length>=maxlength){
var pressedkey=/[a-zA-Z0-9\.\,\/]/
if (pressedkey.test(String.fromCharCode(e.which)))
e.stopPropagation()
}
}

function countlimit(maxlength,e,placeholder){
var theform=eval(placeholder)
var lengthleft=maxlength-theform.value.length
var placeholderobj=document.all? document.all[placeholder] : document.getElementById(placeholder)
if (window.event||e.target&&e.target==eval(placeholder)){
if (lengthleft<0)
theform.value=theform.value.substring(0,maxlength)
placeholderobj.innerHTML=lengthleft
}
}

function displaylimit(thename, theid, thelimit){
var theform=theid!=""? document.getElementById(theid) : thename
var limit_text='<b><span id="'+theform.toString()+'">'+thelimit+'</span></b> charactères maximum !!!'
if (document.all||ns6)
document.write(limit_text)
if (document.all){
eval(theform).onkeypress=function(){ return restrictinput(thelimit,event,theform)}
eval(theform).onkeydown=function(){ countlimit(thelimit,event,theform)}
} else if (ns6) {
document.body.addEventListener('keypress', function(event) { restrictinput(thelimit,event,theform) }, true);
document.body.addEventListener('keydown', function(event) { countlimit(thelimit,event,theform) }, true);
}
}
</script>

<style type="text/css">
<!--
.ta {
background-color: #AAAAAA;
border: 1px solid #333333;
}
.tex {
font-family: Tahoma;
font-size: 12px;
color: #333333;
}
-->
</style>

</head>

<body topmargin="0" leftmargin="0" bottommargin="0" rightmargin="0">
<?php

//Debut de la requete php
if (isset($_POST['telephone']) AND isset($_POST['texte'])) // Si le telephone et le texte sont remplis
{
if ($_POST['texte']=='') { // Si un des champs est manquant
?>
Veuillez renseigner correctement les champs, merci.
<?php
} if (!is_numeric($_POST['telephone'])) {

?>
Veuillez indiquer un numéro de téléphone valide.
<?php

} else // Si les champs sont corrects

{
exec ('/usr/local/nagios/libexec/sendsms.sh -m "'.$_POST['texte'].'" -n '.$_POST['telephone']);
?>
Votre message à bien été traité.
<?php

}
}
?>
<br>
<table width="550" border="0" cellpadding="0" cellspacing="0" height="100%" background="images/bg01_01.jpg" align="left">
<tr>
<td align="right" valign="top">
<form method="post" action="passerelle-sms.php">
<br>
<img src="images/SMS-PASS_01.jpg" align="left">
<span class="tex">Veuillez entrer le numéro de téléphone</span><br>
<Input name="telephone" class="ta" maxlength="10">
<br><br><br>
<br>
<span class="tex">Votre message</span><br>
<textarea name="texte" cols="50" rows="5" class="ta" id="tzm.fr"></textarea>
<br>
<script>
displaylimit("texte", "tzm.fr", 160)
</script>
<p>
<input type="submit" value="Envoyer SMS" class="ta">
<Input type="Reset" value="Tout effacer !!!" class="ta">
</form>
</td>
</tr>
</table>

</body>

</html>
Edité le 24/07/2007 à 13:04
 
 
Contacter le membreVoir profil
gcc
En fait, tu ne perds pas tes infos, tu les ignores.
Tu fais un submit, donc tu réaffiches une nouvelle page. C'est à toi de forcer les valeurs lors de l'affichage avec le contenu du $_POST
Le plus simple serait de faire la vérication en javascript et de n'envoyer vers le serveur que si tout est correct
 
 
Ok, mais il n'y a donc aucune verification coté serveur, ce qui peut poser problème, si certaines personnes desactives les controles java, ils passent à coté :s (à moins que je raconte une betise la )

Et lorque tu dis qu'il faut forcer les valeurs lors de l'affichage, il faut procéder de quelle manière ?? Merci
 
 
Voir profilContacter le membre
gcc
Tu peux forcer une valeur avec value
<Input name="telephone" class="ta" maxlength="10" value="xxxx" />

Ok, mais il n'y a donc aucune verification coté serveur
Pas forcément ; le fait de vérifier au départ ne t'empêche pas de vérifier à l'arrivee.
Et si certaines personnes ont désactivé leur javascript, elles auront (et elles seulement) à retaper le tout.
A voir si c'est vraiment gênant et quel pourcentage de tes clients cela touche
 
 
Ok, je te remerci pour ta compréhension, j'ai donc réalisé l'opération en forçant, j'ai rajouté ceci :

<?php echo isset($_POST['texte'])?$_POST['texte']:' ' ?>

Mais le problème c'est que le texte reste même après que le message soit envoyé :s Il faut que le champs texte soit vierge, si le message a bien été envoyé.

Et c'est juste un projet pour l'entreprise, nous possédons l'outils de supervision nagios, donc autant profité du forfait sms illimité
 
 
Après ton exec :

exec ('/usr/local/nagios/libexec/sendsms.sh -m "'.$_POST['texte'].'" -n '.$_POST['telephone']);

Essaye ça :

unset($_POST['texte']);

ou

$_POST['texte'] = null;
Modérateur Logiciel - Programmation
 
 
Voir profilContacter le membre
gcc
<?php echo isset($_POST['texte'])?$_POST['texte']:' ' ?>
je suppose que tu l'as mis à la place des xxxx ?
fais plutôt
<?php echo $valeurTexte; ?>
tu initialises ton $valeurTexte en début de programme.
Et pour éviter la réinscription en cas de succès, il te suffit de le repasser à chaine vide juste après ta ligne exec
 
 
Voila mon problème est résolu, en bref j'ai procedé de cette manière :

- j'ai rentré cela entre les balises <textearea> "<?php echo isset($_POST['texte'])?$_POST['texte']:'' ?>"

-puis à la fin de mon exec "$_POST['texte'] = ''; "

Cela me donne le résultat que je désirais, merci de vos precieux conseil

Si cela n'est pas correct au niveau du langage, indiquez le moi
 
 
ça l'est, ça l'est
Modérateur Logiciel - Programmation
 
 
aidez moi le site java.com internet explorer me met serveur introuvable comment je fait
 
 
Et c'est quoi le rapport avec

1) PHP
2) la question du sujet

Et surtout, l'intérêt du message, là?
Modérateur Logiciel - Programmation
 
 
Voir même, le sens de la phrase ?
 
 

|
 
12 messages
Un expert informatique vous aide immédiatement par téléphone.
Filtrer ok
 
Vous devez être connecté pour écrire un message !
 

 Sujets Similaires: