Bonjour à tous,
premier post, beaucoup d'espoir ...
Je migre un site en PHP 5.2 depuis un serveur IIS 7.0 sur Windows 2008 std (32bits) vers (j'ai essayé pas mal de versions et plusieurs OS alors pour faire simple, ) vers le même environnement sur un autre serveur plus récent.
Je bloque sur le fait que tout fonctionne parfaitement sur le site d'origine (sauf que l'on va démonter le serveur qui devient obsolète) et que sur le site d'arrivée ça ne fonctionne pas !!!
Le programme fut développé en 2006 par une personne que je ne connais pas et dont la société à disparu du marché ... Il est réalisé en PHP 5.2 avec SMARTY 2.6.14 et ADODB 4.71 les données sont gérées dans un MS SQL (dans la version originale la version Express et dans la configuration d'arrivée sur la version 2008 de SQL server). La DB a été migrée sans être modifiée par un simple Backup Restore.
Le programme fonctionne jusqu'à l'affichage du menu d'inscription. En indiquant le nom de l'utilisateur et son mot de passe rien ne se passe alors que j'ai vérifié qu'il s'agissait des bonnes informations. (les noms d'utilisateurs et les mots de passes sont en clair dans la table SQL).
J'ai donc décortiqué ligne par ligne pour trouver l'endroit où ça "déraille".
Une fonction FrmLogin() récupère les informations introduites dans le Formulaire installé dans le Template Login.tpl. (J'ai essayé ça fonctionne bien les variables $_POST['login'] et $_POST['pwd'] sont bien remplies des données placées dans le formulaire ...
FONCTION FrmLogin()
TEMPLATE Login.tpl
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 function frmLogin() { if ($_POST['form_type']!='loginFT') return; $user = new user(); if($user->userLogin($_POST['login'],$_POST['pwd'],&$rsl)) { $user = new user($rsl['Id']); foreach($user as $f => $v) { $_SESSION['user'][$f] = $v; } } else { $error = new error('login'); echo $error->msg; } header("location:index.php"); exit; }
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <form id='loginForm' name='loginForm' method='POST' class="none"> <input type='hidden' id='form_type' name='form_type' value='loginFT'> <span style="display:inline"> Nom d'utilisateur : <input type='text' id='login' name='login' value=''> Mot de passe : <input type='password' id='pwd' name='pwd' value=''> <input type='submit' id='loginSubmit' name='loginSubmit' value='Connexion'> </span> </form>
Par contre la Fonction FrmLogin() finit par un "header("location:index.php");" qui relance le chargement de la page Index.php et les variables sont alors confiées à $User disparaissent et lors du rechargement de Index.php on revient à zéro comme si rien n'avait été introduit dans le formulaire. Alors que sur l'autre système User$ contient bien les informations nécessaires pour ouvrir la session et afficher le menu de l'utilisateur.
Je me rends compte que ces informations très succinctes nécessiteront ds compléments d'informations ... je reste bien entendu à votre disposition pour donner les informations complémentaires nécessaires.
Inutile de dire sue je suis assez "nul" en PHP mais j'espère quand même recevoir de votre part les indications me permettant de passer au dessus de ce problème.
Je termine en confirmant que je n'ai pas modifié le code qui fonctionne sur le poste d'origine, que la base de données est opérationnelle, que j'ai pu faire des accès en utilisant les procédures du programme en question pour accéder aux données du SQL Server et que de ce côté là tout semble parfaitement opérationnel.
Partager