Page 1 sur 1

Problème de variable...

Posté : 25 juin 2006, 14:44
par Invité
Bonjour, j'ai un gros problème, ca m'est jamais arrivé, je classe ca niveau débutant car c'est un script tout simple qui ne fonctionne pas.

Sur un compte Free je met ce script (test.php):
<?php

if($p > 0)
{
$page = $p ;
}

echo $page;
?>
En allant à l'adresse .../test.php?p=2

J'obtient:
2
Jusque là c'est logique non?

Met le même script que je met sur un autre hebergeur ou alors même sur mon pc en localhost, j'obtient:
Notice: Undefined variable: p in c:\program files\easyphp1-8\www\test.php on line 3

Notice: Undefined variable: page in c:\program files\easyphp1-8\www\test.php on line 8
En allant à cette adresse: http://127.0.0.1/TEST.php?p=1

Vraiment je ne voit pas comment faire, et d'ou ca peut venir... Un autre script qui est sur le meme serveur? même si il n'est pas pris en compte dans ce script là?

Posté : 25 juin 2006, 15:42
par jobi1722
Salut,


Attention une adresse en 127.0.0.1 n'est accessible qu'en local !!!

Ton problème vient du changement du niveau de rapport d'erreur avec EasyPHP.

Si tu veut supprimer cette erreur tu dois retirer E_NOTICE des erreurs à afficher dans la configuration d'apache ou utiliser la fonction http://fr2.php.net/error_reporting.


++

Posté : 25 juin 2006, 16:38
par neymir
Le problème c'est qu'il ne devrait pas y avoir d'erreur, vue que la variable $p est défini dans l'URL non? Du moins j'ai toujours fait comme ca et je ne comprend pas pourquoi ca me rapporte une erreur maintenant.

Le E_NOTICE ne pas afficher cette erreur.

J'ai essayer sur un compte sur hebserv.net, sur mon local, et sur un compte 123.fr, et a chaque fois ca fait une erreur, soit ca le dit, soit ca ne dit rien mais ca n'execute non plus pas le script.

Il n'y a que sur un compte free que ca fonctionne, le probleme c'est que mon site n'est pas chez free.

Posté : 25 juin 2006, 16:44
par jobi1722
Salut,

la variable p n'existe pas !!! C'est la variable $_GET['p'] !!!
La variable register_globals est maintenant à OFF pour la plupart des serveurs

Sinon la solution est de mettre error_reporting(0)... Et laissez les erreurs quand tu est en local.

Perso je met ça :

Code : Tout sélectionner

if(ereg('127.0.0.1',$_SERVER['REMOTE_ADDR'])){ error_reporting(E_ERROR|E_PARSE|E_COMPILE_ERROR); }else{ error_reporting(0); }
dans un fichier commun...

++

Posté : 25 juin 2006, 16:48
par Invité
Merci beaucoup ca marche maintenant, c'était bien $_GET['p']. Ca doit faire pas longtemp que ca a changer sur mon serveur car il y a une semaine c'était encore bon.

Ils font ca par sécuritée je pense?

Posté : 25 juin 2006, 16:49
par jobi1722
Salut,

oui :)

Posté : 25 juin 2006, 17:05
par neymir
Pareil pour les session()
Avant ca marcher comme ca:
session_start();
$pseudo = $_POST['login'];
$pass = $_POST['pass'];

session_register("pseudo", "pass");
Maintenant je dois faire ca:
session_start();
$_SESSION['pseudo'] = $_POST['login'];
$_SESSION['pass'] = $_POST['pass'];

session_register("pseudo", "pass");
L'hebergeur aurait dût prévenir non? :?

Posté : 25 juin 2006, 17:26
par jobi1722
Salut,

je crois que le session_register ne sert plus à rien...

++

Posté : 25 juin 2006, 17:57
par Cyrano
Effectivement, session_register() est l'ancienne méthode et en déclarant $_SESSION['pseudo'] = $_POST['login'], tu n'as pas besoin de déclarer à nouveau cette variable de session.

J'ajoute qu'on n'enregistre jamais un mot de passe dans une variable de session. Techniquement, c'est valide, mais en matière de sécurité, c'est tout à fait excécrable et, en plus, ça ne sert à rien.