Bonjour,
Je ne trouve pas depuis des semaines la solution. Une application envoie à mon site une URL pour être enregistrée. On peut enregistrer trois fois l'appli.
Chez moi, cela marche bien, mais parfois, la réponse du serveur est celle d'une deuxième registration et non d'une première. Plus grave, des personnes ayant voulu enregistrer ont reçu pour réponse que c'était la quatrième fois qu'ils enregistraient l'appli (et donc ont été rejetés). C'est comme si mon code bégayait, comme s'il faisait plusieurs fois la procédure.
J'ai testé des messages d'alerte pour faire des tests (en mettant des "echo('entree telle partie') partout). La fonction n'est bien appelée qu'une seule fois.
Voici le code de la fonction :
Fonction appelée ainsi :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 $numReg = 0; //ce nombre sera renvoyé, il détermine le nombre de registrations effectuées $appDaz = "MonAppli"; $today = date("Ymd"); $true = 1; $false = 0; $sqlTwo = "SELECT appName, useOne, useTwo, useThree FROM monRegistre WHERE email = '" . $strEmail . "'AND appName = '".$appDaz."'"; $req = $dbh->prepare($sqlTwo); $req->execute(array($_GET['useOne'], $_GET['useTwo'],$_GET['useThree'])); while($donnnees = $req->fetch()) { if($donnnees['useOne'] == $true && $donnnees['useTwo'] == $true && $donnnees['useThree'] == $true) {$numReg = 4;} else if($donnnees['useOne'] == $true && $donnnees['useTwo'] == $true && $donnnees['useThree'] == $false) {$numReg = 3;} else if($donnnees['useOne'] == $true && $donnnees['useTwo'] == $false && $donnnees['useThree'] == $false) {$numReg = 2;} else {$numReg = 0;} }//fin boucle recherche $req->closeCursor(); if($numReg==4) { } else if($numReg==3) { $sql3a = "UPDATE monRegistre SET useThree=1 WHERE email = '" . $strEmail . "'"; $req3a = $dbh->prepare($sql3a); $req3a->execute(); $req3a->closeCursor(); $sql3b = "UPDATE monRegistre SET dateThree = ".$today." WHERE email = '" . $strEmail . "'"; $req3b = $dbh->prepare($sql3b); $req3b->execute(); $req3b->closeCursor(); } else if($numReg==2) { $sql2a = "UPDATE monRegistre SET useTwo=1 WHERE email = '" . $strEmail . "'"; $req2a = $dbh->prepare($sql2a); $req2a->execute(); $req2a->closeCursor(); //$dbh->query($sql2a); $sql2b = "UPDATE monRegistre SET dateTwo = ".$today." WHERE email = '" . $strEmail . "'"; $req2b = $dbh->prepare($sql2b); $req2b->execute(); $req2b->closeCursor(); //$dbh->query($sql2b); } else if($numReg==1) { } else if($numReg==0) { $sql1 = 'INSERT INTO monRegistre VALUES("","'.$appDaz.'","'.$strEmail.'","'.$true.'","'.$false.'","'.$false.'","'.$today.'","'.$today.'","'.$today.'")'; $reqOne = $dbh->prepare($sql1); $reqOne->execute(); $reqOne->closeCursor(); $numReg = 1; }//fin premiere registration try{ $dbh = null; } catch (PDOException $e) { die();} return ($numReg);
je ne vois vraiment pas où cela cloche. Je travaille avec une base MySQL 5 et un site paramétré en php5 aussi.Code:echo ($verB2 = maFonction($strEmail));
Auriez-vous une idée?