Problème de variable...

Invité
Invité n'ayant pas de compte PHPfrance

25 juin 2006, 14:44

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à?

Eléphant du PHP | 82 Messages

25 juin 2006, 15:42

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.


++

neymir
Invité n'ayant pas de compte PHPfrance

25 juin 2006, 16:38

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.

Eléphant du PHP | 82 Messages

25 juin 2006, 16:44

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...

++

Invité
Invité n'ayant pas de compte PHPfrance

25 juin 2006, 16:48

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?

Eléphant du PHP | 82 Messages

25 juin 2006, 16:49

Salut,

oui :)

neymir
Invité n'ayant pas de compte PHPfrance

25 juin 2006, 17:05

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? :?

Eléphant du PHP | 82 Messages

25 juin 2006, 17:26

Salut,

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

++

Mammouth du PHP | 19672 Messages

25 juin 2006, 17:57

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: