Bonjour à vous tous. Mon hébergeur à passé à la version 5 sans m'en parler donc je voudrais faire fonctionner mes pages à nouveau.
Tous les sites que j'ai fait fonctionne magnifiquement bien sur les serveurs PHP4.x mais ne veut rien savoir en version 5.
J'utilise la structure suivante : Mon fichier index.php appel par include le fichier bll.php, qui lui-même appel dal.php et qui à son tour appel connection.php
l'avantage est que si je change de type de base de données je n'ai qu'à changer mes requêtes dans le fichier dal.php et mon fichier de connexion.
Voici mes fichiers
inc/connection.php
inc/dal.php
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 <? class connection { var $Host = "mysql2.myserv.com"; // Hostname of our MySQL server. var $Database = "mydatabasename"; // Logical database name on that server. var $User = "mydatabaseuser"; // User und Password for login. var $Password = "mydatabasepass"; var $Link_ID = 0; // Result of mysql_myconnect(). var $Query_ID = 0; // Result of most recent mysql_query(). var $Record = array(); // current mysql_fetch_array()-result. var $Row; // current row number. var $Errno = 0; // error state of query... var $Error = ""; ## myhalt() start ## function myhalt($msg) { printf("</td></tr></table><b>Database error:</b> %s<br>\n", $msg); printf("<b>MySQL Error</b>: %s (%s)<br>\n", $this->Errno, $this->Error); die("Session halted."); } ## myhalt() end ## ## myconnect() start ## function myconnect() { if ( 0 == $this->Link_ID ) { $this->Link_ID=mysql_myconnect($this->Host, $this->User, $this->Password); if (!$this->Link_ID) { $this->myhalt("Link-ID == false, connect failed"); } if (!mysql_query(sprintf("use %s",$this->Database),$this->Link_ID)) { $this->myhalt("cannot use database ".$this->Database); } } } ## myconnect() end ## ## dispose() start ## function dispose() { $this->Link_ID = -1; } ## dispose() end ## ## query() start ## function query($Query_String) { $this->myconnect(); $this->Query_ID = mysql_query($Query_String,$this->Link_ID); $this->Row = 0; $this->Errno = mysql_errno(); $this->Error = mysql_error(); if (!$this->Query_ID) { $this->myhalt("Invalid SQL: ".$Query_String); } return $this->Query_ID; } ## query() end ## ## next_query() start ## function next_record() { $this->Record = mysql_fetch_array($this->Query_ID); $this->Row += 1; $this->Errno = mysql_errno(); $this->Error = mysql_error(); $stat = is_array($this->Record); if (!$stat) { mysql_free_result($this->Query_ID); $this->Query_ID = 0; } return $stat; } ## next_query() end ## ## seek() start ## function seek($pos) { $status = mysql_data_seek($this->Query_ID, $pos); if ($status) $this->Row = $pos; return; } ## seek() end ## function num_rows() { return mysql_num_rows($this->Query_ID); } function num_fields() { return mysql_num_fields($this->Query_ID); } function f($Name) { return $this->Record[$Name]; } function p($Name) { print $this->Record[$Name]; } function affected_rows() { return @mysql_affected_rows($this->Link_ID); } } ?>
inc/bll.php
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 <? include("connection.php"); class DAL { // CONNECTION function conn(){ $this = new connection; } function dispose(){ $this->dispose(); } /////////////////////////////////////////////////// ////////////////// LOGIN /////////////////// /////////////////////////////////////////////////// function mylogin($user, $pass){ if ($user != "" OR $pass != ""){ $qry = "SELECT * FROM tbl_user WHERE fld_username = '".$user."' AND fld_pw = '".$pass."';"; $this->conn(); $this->query($qry); if($this->num_rows() == 1){ $this->next_record(); $t = $this->Record['fld_userID']; $this->dispose(); return $t; } else { return -1 ; } } else { return -1 ; } } } // FIN CLASS ?>
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 <? include("dal.php"); class BLL { function conn() { $this = new DAL; } function dispose() { $this->dispose(); } /////////////////////////////////////////////////// ////////////////// LOGIN /////////////////// /////////////////////////////////////////////////// function mylogin($user, $pass){ $this->conn(); $t = $this->mylogin($user, $pass); if ($t > 0){ $_SESSION['userID'] = $t; $this->dispose(); return $t; } else { $this->dispose(); return false; } } } // FIN CLASS ?>
index.php
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 <? session_start(); //INCLUDE include("inc/bll.php"); include("inc/util.php"); include("inc/error.php"); //VARIABLES $badUser = ""; $error = array(); //VALIDATION if ($_SERVER['REQUEST_METHOD'] == "POST"){ $user = $_POST['user']; $pw = md5($_POST['pw']); if($user == "" || $pw == "") { $error[] = 1; $_SESSION['userID'] = 0; $_SESSION['security'] = 0; } else { $conn = new BLL; $login = $conn->mylogin($user, $pw); if ($login > 0){ $conn->dispose(); header("location: home.php"); } else{ $conn->dispose(); $error[] = 2; $_SESSION['userID'] = 0; $_SESSION['security'] = 0; } } } // COLLECTE D'INFORMATION POUR LES MESSAGES D'ERREUR A AFFICHER if (count($error) > 0){ $errormsg = ""; for ($x = 0; $x <= count($error); $x++){ if ($error[$x] > 0){ $errormsg .= gestionError($error[$x])."<br>"; } } } ?> <html> <head> <title>TITRE</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link href="css/general.css" rel="stylesheet" type="text/css"> </head> <body> <form name="form1" method="post" action=""> <table width="760" border="0" align="center" cellpadding="0" cellspacing="0" class="text"> <tr> <td colspan="2"><img src="i/logo.gif" width="760" height="84"></td> </tr> <tr> <td width="28%" height="20"> </td> <td width="72%" height="20"> </td> </tr> <tr> <td height="20"> </td> <td height="20" class="error"><? echo $errormsg; ?></td> </tr> <tr> <td height="20" colspan="2"><table width="760" border="0" cellspacing="0" cellpadding="0"> <tr class="text"> <td height="20"><div align="right">Nom d'Usager : </div></td> <td height="20"><input name="user" type="text" class="text" id="user"></td> </tr> <tr class="text"> <td height="20"><div align="right">Mot de Passe : </div></td> <td height="20"><input name="pw" type="password" class="text" id="pw"></td> </tr> <tr class="text"> <td height="20"> </td> <td height="20"><input type="submit" name="Submit" value="Valider"></td> </tr> </table></td> </tr> </table> </form> </body> </html>
Lorsque je tente d'exécuter le code sur la version 5, il me donne tout simplement une page blanche avec rien dedans, même si j'affiche la source.
Après plusieurs heures de recherche, de lecture sur les différents forums et à mettre tout en commentaire et activer peu à peu mon code ... voici la ligne qui cause tous les problèmes selon moi mais qui est primordiale dans l'ensemble de mon code.
dans le fichier dal.php
il ne semble pas aimer $this = ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 function conn(){ $this = new connection; // ICI LE PROBLÈME }
qqun a une idée du problème causé par PHP 5 ????
Merci à l'avance
Partager