Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Bonjour à tous
J'ai fait un site avec un accès limité à l'aide de session. Mon problème, c'est que chez moi celà marche très bien, mais sur le serveur non. Il ne créer pas les fichiers de session alors que le serveur a déjà un site nuke qui utilise des sessions et le répertoire "sessiondata" contient bien les fichiers pour nuke. Le php.ini au niveau de la rubrique [Session] est identique à chez moi.
Dans chaque page j'ai inclus le code ci-dessous pour vérifier si une session existe grace à un enregistrement que je fais après être identifié.
Sur le serveur comme il ne crée pas la session j'ai le message ci-dessous.
<?php
session_start();
if(empty($_SESSION['truc'])) {
die('Sorry, but you are not logged in or your session expired
<a href="log.php">Click here to log in</a>');
}
?>Je ne vois pas d'où vient le problème si quelqu'un à une idée.
Merci.
Hors ligne
indication complémentaire :
dans ma page login si l'identification est valide j'enregistre les informations que je veux garder lors de la navigation avec la commande suivante :
$_SESSION['log'] = $login;
Hors ligne
J'ai essayé avec session_register()
donc j'ai remplacé
$_SESSION['log'] = $dat['login']
par
$log = $dat['login'];
session_register("log");mais maintenant j'ai un message d'erreur qui apparaît lorsque je valide mon indentification et après je vais à ma page d'accueil.
Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
A part çà, çà marche, du moins en local sur ma machine. Je vais essayer ce soir sur le serveur. Mais j'aimerais bien comprendre pourquoi j'ai ce message.
Hors ligne
la register_globals est desactivée
Si votre script utilise session_register(), il ne fonctionnera pas dans les environnements où register_globals est désactivée
par défaut, register_globals est a off depuis php 4.2.0 je suppose (et j'espere) que tu utilise une version superieure
si tu passe par une fonction, définis tes variables en GLOBALS avant de faire ton session_register
$GLOBALS['variable'] = $variable;
Hors ligne
Tout d'abord merci pour ton aide KaZhaR
Avec session_register() çà marche sur le serveur
je ne sais pas la différence entre les 2 syntaxes mais bon.
J'ai activé register_globals et j'ai plus le message d'erreur lors de la première connection.
Oui j'utilise une version supérieur à php 4.20.0 j'avais une version 4.3.8 avant de le mettre à jour aujourd'hui par la version 4.3.10
J'en ai profité pour mettre à jour MySQL à la version 4.1.8
J'ai un autre petit problème de connexion avec la base sur ma machine depuis la mise à jour.
J'ai une page php de connexion à ma base de donnée avec un utilisateur que j'ai créé spécialement pour le site avec "MySQL Control Center" et qui n'a des droits que sur cette base.
Mon problème est que le mot de passe que j'ai défini pour l'utilisateur et que je j'utilise dans ma page de connexion ne marche plus ???
Quelque soit le mot de passe çà veut pas marcher.
Mais si je ne mets pas de mot de passe, çà marche.
Hors ligne
Oui celà me crée bien un utilisateur
je le vois dans PhpMyAdmin je l'ai refait avec et c'est pareil. Je cherche l'erreur.
dans ma page de connexion j'ai le code suivant :
<?php
// Paramètres persos
$host = "localhost";
$user = "truc";
$pass = "truc";
$bdd = "truc";
// connexion
@mysql_connect($host,$user,$pass)
or die("Impossible de se connecter problème host, user ou password");
@mysql_select_db("$bdd")
or die("Impossible de se connecter la base n'existe pas ou est erronée");
?>J'ai découvert une erreur avec mes sessions pendant la navigation je perds des infos dans mes variables. J'en ai résolu une, c'est que j'utilisais le même nom de variable. Je ne savais pas que l'on les appelait par $nom
Ma seconde erreur est : Lorsque je passe l'identification, j'enregistre 3 variables et je vais à la page d'accueil.
Jusque là, c'est correcte
log|s:1:"3";pass|s:1:"4";right|s:1:"1";
Mais dès que je passe à une autre page je perds l'info de ma variable pass
log|s:1:"3";pass|s:0:"";right|s:1:"1";
Si je remplace le nom "pass" par "test" par exemple çà marche.
Je voulais savoir si le nom "pass" est une commande, car j'ai vérifié, et je n'ai pas d'autres variables de même nom dans mon code.
Hors ligne
si tes variables sont redéfinies, ca veut forcément dire que tu les redéfinit quelque part.
pour ton pbm mysql, essaye de rajouter un mysql_error() dans ton message de die pour la connection mysql, il te dira quel est le pbm ![]()
Hors ligne
Bon j'ai modifié mon code pour utiliser mysql_error()
// connexion
mysql_connect($host,$user,$pass);
mysql_select_db("nom base");
echo mysql_errno() . ": " . mysql_error(). "n";et j'ai eu l'erreur suivante :
Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in...
et j'ai trouvé une réponse sur le net
SUMMARY
Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client ...
Could not connect: Client does not support authentication protocol requested by server; consider upgrading MySQL client
INFORMATION
As of MySQL 4.1 there is a new authentication protocol. This authentication protocol is only supported by PHP 5 or higher.
So what you need to do is upgrade your PHP engine to PHP 5 or higher.
NOTE: We have found that PHP 5.0.2 (on Windows) comes with the 3.23.x client API. Try... PHP 5.0.3 for MySQL 4.1.x
Donc il faut que j'installe PHP 5 car il est le seul à supporter le nouveau protocol d'identification de MySQL 4.1.
Mais est-il stable car la dernière fois que que j'ai voulu installer une des premières versions PHP 5 mes pages PHP ne marchaient plus
J'espère que cette info aidera d'autres qui auront ce problème et qu'ils ne savaient pas, maintenant ils sauront
Pour mon prob de session je vais analyser çà.
Hors ligne
ok ok lol
J'ai installé PHP 5 ben mes pages marchées plus après car il faut faire quelques modifications dans le fichier php.ini :?
modifier le chemin où se trouve les extensions dll
pour moi c'est le répertoire "ext"
extension_dir = "./ext"
enlever le ; pour pouvoir se connecter à mysql
extension=php_mysql.dll
J'ai résolu tous mes problèmes pour le moment lol merci encore pour ton aide KaZhaR
Je trouve très intéressant de recharger juste les infos qui changent sans recharger totalement la page, vu que je le fais sur quasi tout le site. J'aimerais savoir si c'est facile à mettre en place ? Car j'ai regardé quelques sites et j'ai pas tout compris
. Je ne suis qu'un amateur en php et j'apprends sur le tas.
Hors ligne
PHP sans recharger la page
personnelement, j'ai pas eu le temps (ni la necessité) de me pencher sur la question
mais, ca peut être interessant
Hors ligne
C'est sur ton site que j'ai vu que çà existait
J'ai consulté déjà ces pages mais pour le moment ce n'est pas une nécessité donc je vais attendre pour qu'il y'est plus d'infos et des exemples pour m'aider.
Hors ligne