Bonsoir, bonsoir,

J'ai un petit soucis avec une function dans laquel en cas d'erreur on relance la procédure, cependant de cette récursivité émane une erreur 500 et je ne comprends pas pourquoi.

l'erreur se produit lorsque : $get_tinyurl est égal à une entrée existante dans la BDD; on tombe donc sur le "IF" correspondant à la ligne 67.

Merci de votre aide.
Bonne soirée

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
 
			<?php
 
function generatkey($nbcaract){
    $word = "a,b,c,d,e,f,g,h,i,j,k,l,m,1,2,3,4,5,6,7,8,9,0";  
    $array=explode(",",$word);  
    shuffle($array);  
    $newstring = implode($array,"");  
    return substr($newstring, 0, $nbcaract);  
}
function Verif_tinyurl($tinyurl,$url,$ip,$browser,$date){
	$bool_ok = false;
	if (($tinyurl <> '') && ($url <> '') && ($ip <> '') && ($browser <> '') && ($date <> '')) {
		require_once("/app_code/dal_sql.php");
		$bool_exist_tiny = false;
		$sql_SELECT1="SELECT tinyurl_tinyurl FROM ws_tinyurl WHERE tinyurl_tinyurl='".$tinyurl."'";
		//echo 'DEBUG : '.$sql_SELECT1.'<br/>';
		try {
			$sql_EXECUTE1 = $pdo->prepare($sql_SELECT1);
			$sql_EXECUTE1->execute();
			$nbrows = $sql_EXECUTE1->rowcount();
 
			while ($row = $sql_EXECUTE1->fetch()) {
				if($row[0] = $tinyurl){$bool_exist_tiny = true; }
			}
		}
		catch (Exception $e){
			$msg = '<p>ERREUR PDO : ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage()."</p>";
			echo $msg;
		}
 
		$bool_exist_url = false;
		$sql_SELECT2="SELECT url_tinyurl FROM ws_tinyurl WHERE url_tinyurl='".$url."'";
		//echo 'DEBUG : '.$sql_SELECT2.'<br/>';
		try {
			$sql_EXECUTE2 = $pdo->prepare($sql_SELECT2);
			$sql_EXECUTE2->execute();
			$nbrows = $sql_EXECUTE2->rowcount();
 
			while ($row = $sql_EXECUTE2->fetch()) {
				if($row[0] = $url){$bool_exist_url = true;}
			}
		}
		catch (Exception $e){
			$msg = '<p>ERREUR PDO : ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage()."</p>";
			echo $msg;
		}
 
		if ((!$bool_exist_tiny) && (!$bool_exist_url)){
			$sql_INSERT="INSERT INTO ws_tinyurl (tinyurl_tinyurl,url_tinyurl,user_ip_tinyurl,user_browser_tinyurl,date_crea_tinyurl) VALUES (?,?,?,?,?)";
			$add_parameter=array($tinyurl,$url,$ip,$browser,$date);
			try {
				$sql_EXECUTE = $pdo->prepare($sql_INSERT);
				$sql_EXECUTE->execute($add_parameter);
				$nbrows = $sql_EXECUTE->rowcount();
				$bool_ok = true;
				$msg = 'votre miniurl : '.$tinyurl.'<br/>';
				echo $msg;
				$bool_ok = true;
			}
			catch (Exception $e){
				$msg = '<p>ERREUR PDO : ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage().'</p>';
				echo $msg;
			}
		}
		else{
			if ($bool_exist_tiny){
				$g_tinyurl =  generatkey(8);
				Verif_tinyurl($g_tinyurl,$url,$ip,$browser,$date);
			}
			if ($bool_exist_url){
				$msg = '<p>l\'url ('.$url.') est déjà enregistré</p>';
				echo $msg;
			}			
		}
	}
	else{echo 'DEBUG tiny : '.$tinyurl.'<br/> url : '.$url.'<br/> ip : '.$ip.'<br/> browser : '.$browser.'<br/> date : '.$date.'<br/>';}
 
	return $bool_ok;
}
 
$ip = $_SERVER['REMOTE_ADDR'];
$browser = $_SERVER['HTTP_USER_AGENT'];
$date = date("Y-m-d H:i:s");
$get_url = 'MONURL';
$get_tinyurl = 'TINYURL'; //generatkey(6);
if (Verif_tinyurl($get_tinyurl,$get_url,$ip,$browser,$date)) {
	echo '<br/>OK<br/>';
}
else {
	echo '<br/>PAS OK<br/>';
}
 
?>