Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1441 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  en C .... je dois securiser pour que l'utilisateur ....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

en C .... je dois securiser pour que l'utilisateur ....

n°127052
bistou
Vieux .... très très vieux!
Posté le 17-04-2002 à 13:15:13  profilanswer
 

sache pas rentrer des lettre pour la clé primaire de mon fichier
 
g donc:
 
printf ("entrez un clé: " );
scanf ("%d",&cle);
do
{
if (cle<0 || cle >9999)
  printf ("reentrez la clé: " );
  scanf ("%d";&cle);  
}
while (cle<0 || cle >9999);
 
mais si je rentre une lettre ça part en boucle infinie et ma clé est declarée en int bien sur...
comment faire pur empecher de rentrer des lettres ou de securiser ça?


---------------
:sol:
mood
Publicité
Posté le 17-04-2002 à 13:15:13  profilanswer
 

n°127113
Jar Jar
Intaigriste
Posté le 17-04-2002 à 14:08:08  profilanswer
 

do
  printf("Entrez une clé : " );
while(scanf("%d",&cle)!=1 || cle<0 || cle>9999);


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°127238
bistou
Vieux .... très très vieux!
Posté le 17-04-2002 à 16:16:09  profilanswer
 

[:screamfr]


---------------
:sol:
n°127247
ggm61
Posté le 17-04-2002 à 16:21:21  profilanswer
 

fais une fonction BOOL isNumerique(CString cle)
la syntaxe est completement fausse, mais c juste pour l algo ...
 
BOOL isNumerique(CString sCle)
{ int iAux;
  CString sAux;
  iAux = atoi(cle);
  sAux.Format("%d", iAux);
  if (sAux != sCle)
     return FALSE;
  return TRUE;
}
 
...
 
printf ("entrez un clé: " );
scanf ("%s",&cle);
 
while (!isNumerique(cle) || (cle<0 || cle >9999))
{
 printf ("reentrez la clé: " );
 scanf ("%s";&cle);  
}


---------------
Canon Powershot S40
n°127273
ITM
Avatar peint à la main
Posté le 17-04-2002 à 16:50:58  profilanswer
 

bool n'existe pas en C
J'ai testé, ca marche très bien comme ça :
 
--------------------------------------------------
   int clef;
   ...
 
   printf ("Entrez une clef : " );  
   scanf ("%d",&clef);  
   while (clef < 0 || clef > 9999) {
      printf ("réentrez la clef : " );  
      scanf ("%d",&clef);
   }
 
--------------------------------------------------


---------------
iteme.free.fr | Mon feedback
n°127278
bistou
Vieux .... très très vieux!
Posté le 17-04-2002 à 16:55:49  profilanswer
 

ITM a écrit a écrit :

bool n'existe pas en C
J'ai testé, ca marche très bien comme ça :
 
--------------------------------------------------
   int clef;
   ...
 
   printf ("Entrez une clef : " );  
   scanf ("%d",&clef);  
   while (clef < 0 || clef > 9999) {
      printf ("réentrez la clef : " );  
      scanf ("%d",&clef);
   }
 
--------------------------------------------------  




 
t'as essayé de rentrer un caractere?


---------------
:sol:
n°127280
ITM
Avatar peint à la main
Posté le 17-04-2002 à 16:56:48  profilanswer
 

Ah, oui, j'vais mal lu!
En effet, le problème est toujours là...


---------------
iteme.free.fr | Mon feedback
n°127282
ggm61
Posté le 17-04-2002 à 16:57:13  profilanswer
 

ITM a écrit a écrit :

bool n'existe pas en C




 
 
CString non plus  ;) c etait juste pour l algo ...
si tu envois 01 il va te dire que c pas numerique ... faut etoffer, c etait juste une piste.
 
PS : c est koi boolean ?


---------------
Canon Powershot S40
n°127303
ITM
Avatar peint à la main
Posté le 17-04-2002 à 17:14:13  profilanswer
 

Tadam! Ca marche maintenant:
 
--------------------------------------------
#include <stdio.h>
#include <stdlib.h>
 
...
   int clef;
   char buf[255];
 
...
 
   while (1) {
      printf ("Entrez la clef : " );  
      scanf ("%s", buf);
      printf("chaine : %s\n", buf);
      if (isdigit(buf[0])!= 0) {
         clef = atoi(buf);
         if (clef >= 0 || clef <= 9999)
            break;
      }
      else
         continue;
   }
   printf("Clef = %d", clef);
--------------------------------------------
J'ai mis des etapes avec printf pour que tu vois bien, t'as plus qu'à les enlever apres.

 

[jfdsdjhfuetppo]--Message édité par ITM--[/jfdsdjhfuetppo]


---------------
iteme.free.fr | Mon feedback
n°127310
ggm61
Posté le 17-04-2002 à 17:17:12  profilanswer
 

moue .... mais faut tester toute la chaine (buf) ...


---------------
Canon Powershot S40
mood
Publicité
Posté le 17-04-2002 à 17:17:12  profilanswer
 

n°127321
ITM
Avatar peint à la main
Posté le 17-04-2002 à 17:26:24  profilanswer
 

Bien sur que non!
Exemple:
On entre le clef:
4554fg78ss45
Il prend buf[0] et il voit que c'est un chiffre
atoi(buf) va donc convertir le resultat en :
4554 et c'est tout, il s'arrete à la premiere lettre.

 

[jfdsdjhfuetppo]--Message édité par ITM--[/jfdsdjhfuetppo]


---------------
iteme.free.fr | Mon feedback
n°127403
bistou
Vieux .... très très vieux!
Posté le 17-04-2002 à 19:25:19  profilanswer
 

ITM a écrit a écrit :

Tadam! Ca marche maintenant:
 
--------------------------------------------
#include <stdio.h>
#include <stdlib.h>
 
...
   int clef;
   char buf[255];
 
...
 
   while (1) {
      printf ("Entrez la clef : " );  
      scanf ("%s", buf);
      printf("chaine : %s\n", buf);
      if (isdigit(buf[0])!= 0) {
         clef = atoi(buf);
         if (clef >= 0 || clef <= 9999)
            break;
      }
      else
         continue;
   }
   printf("Clef = %d", clef);
--------------------------------------------
J'ai mis des etapes avec printf pour que tu vois bien, t'as plus qu'à les enlever apres.  
 
 




 
 
c koa c trucs? g jamais vu ça


---------------
:sol:
n°127408
HappyHarry
Posté le 17-04-2002 à 19:44:31  profilanswer
 

isDigit est une macro, et atoi une fonction de la lib standard C ...bonnes révisions !  :D

n°127410
ITM
Avatar peint à la main
Posté le 17-04-2002 à 19:50:21  profilanswer
 

:lol:  :lol:


---------------
iteme.free.fr | Mon feedback
n°127418
bistou
Vieux .... très très vieux!
Posté le 17-04-2002 à 19:59:50  profilanswer
 

HappyHarry a écrit a écrit :

isDigit est une macro, et atoi une fonction de la lib standard C ...bonnes révisions !  :D  




 
chui en 1ere moa tt on en est ayu liste et le prog le plus elaboré que g fé c un fichier tri ashcode :/  et ça on en a pas encore eu besoin


---------------
:sol:
n°127420
HappyHarry
Posté le 17-04-2002 à 20:01:51  profilanswer
 

ouais mais connaitre au moins stdlib par coeur ca fait pas de mal quand on fait du C !

n°127528
ggm61
Posté le 17-04-2002 à 23:08:16  profilanswer
 

ITM a écrit a écrit :

Bien sur que non!
Exemple:
On entre le clef:
4554fg78ss45
Il prend buf[0] et il voit que c'est un chiffre
atoi(buf) va donc convertir le resultat en :
4554 et c'est tout, il s'arrete à la premiere lettre.  




 
oue c sure ... c de la precision de d'horlogerie ...  :sarcastic:

n°127756
bistou
Vieux .... très très vieux!
Posté le 18-04-2002 à 12:05:53  profilanswer
 

[:screamfr]


---------------
:sol:
n°127773
Aricoh
gentil mais fo po pousser
Posté le 18-04-2002 à 12:20:13  profilanswer
 

je veux pas dire une bêtise mais le C peut caster une variable pour forcer son type
 
Après avoir fait ton scanf sur ce que le user a saisi, qu'est-ce que ça fait si tu force la valeur retournée à être castée en int ?
 
Sauf erreur de syntaxe :
...
    scanf ("%d";&cle);  
    cle = int(cle);
}  
while (cle<0 || cle >9999);


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
n°127791
bistou
Vieux .... très très vieux!
Posté le 18-04-2002 à 12:48:56  profilanswer
 

expression syntax error :/


---------------
:sol:
n°127795
Aricoh
gentil mais fo po pousser
Posté le 18-04-2002 à 12:55:16  profilanswer
 

bistou a écrit a écrit :

expression syntax error :/  



Je me souviens avoir fait une fonction qui recevait la saisie en paramètre et qui la stockait dans un buffer (tableau)
 
pour chaque élément du tableau, j'utilisais la fonction atoi pour vérifier si c'était bien un int, arf j'me souviens plus comment j'avais fait le truc mais ça marchait hyper bien :(


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
n°128067
bistou
Vieux .... très très vieux!
Posté le 18-04-2002 à 17:54:48  profilanswer
 

[:screamfr]


---------------
:sol:
n°128108
Aricoh
gentil mais fo po pousser
Posté le 18-04-2002 à 19:47:45  profilanswer
 

tiens, j'ai retrouvé ma fonction en question, ça remonte au temps où je commençais à faire mes pas dans la programmation (suis passé à Perl depuis, arf !), je sais pas si ça te sera clair et utile mais bon, valà le brin :
 
/* vérification de saisie d'une valeur int à 1 ou 2 chiffres */
void verif_int (int *a, int nbre)
{
 char buffer[200];
 
 buffer[0] = '\0';
 
 gets(buffer);
 buffer[nbre] = '\0';
 *a = atoi(buffer);
 return;
}


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
n°128120
ITM
Avatar peint à la main
Posté le 18-04-2002 à 20:14:06  profilanswer
 

bistou -> qu'est-ce que ne va pas? Le code que je t'ai donné marche très bien!!


---------------
iteme.free.fr | Mon feedback
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  en C .... je dois securiser pour que l'utilisateur ....

 

Sujets relatifs
[PHP+CSS] une feuille de style par utilisateur[php] je dois récupérer le contenu d'un fichier avec un socket...
Sécuriser phpmyadminJe debute dans la programmation par quel language dois-je commer ?
[Kylix2] Serveur Multi Utilisateur.....si je dois choisir pour un public large IE 5.5 IE 6 NN6 NT4.7 NT6.21?
[API] WNetAddConnection2A et profil utilisateur...[MFC] Interactions avec l'utilisateur
Bug Java très ralant (pour les utilisateur)je voudrais recuperer le nom du lien sur lequel l'utilisateur click
Plus de sujets relatifs à : en C .... je dois securiser pour que l'utilisateur ....


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR