parametrage des sessions ds le php.ini

toony21
Invité n'ayant pas de compte PHPfrance

12 juil. 2005, 14:51

Bonjour,

Je viens d'installer un easyphp et l'utilisation des sessions n'a pas l'air de bien marcher. Je n'ai pas modifier le php.ini depuis l'installation.
Dès que je lance ma page avec les sessions j'ai le message :

Notice: Undefined index: type in c:\program files\easyphp1-8\www\o-liste.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\o-liste.php:3) in c:\program files\easyphp1-8\www\o-liste.php on line 5

comment dois etre configurer mon php.ini? :roll:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 juil. 2005, 14:54

C'est pas un problème de php.ini

Est-ce que tu as mis session_start() et surtout : est-ce qu'il est bien au DEBUT de ton script (avant tout code HTML) ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

toony21
Invité n'ayant pas de compte PHPfrance

12 juil. 2005, 15:09

oui il est bien présent. mais le pb vient de la configuration de mon php.ini car j'ai testé le script sur un hebergement online et aucun pb. Mais là j'ai installé l'easyphp et ca ne marche pas!
Le pb vient dc de lui...

<?
session_start(); // On démarre la session
$type=$_SESSION['type'];
if ($type!="O"){
header ("Location: accueil-pro.php");
}
?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 juil. 2005, 15:15

Est-ce que tu as un espace ou un saut de ligne avant le header() ?

Parce que le message d'erreur est typiquement celui qui est généré dans ce cas
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

12 juil. 2005, 15:24

pourtant non. Le code est écrit comme ci-dessus.
Sans espaces.
C'est la version 1.8 d'easyphp qui est installé. J'ai vu que la variable register_global etait à 0, je l'ai passsé à 1 mais rien ne change.

Personne n'a déja paramétrer son php.ini pour qu'il accepte des sessions ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 juil. 2005, 15:26

Est-ce que tu as ça dans ton php.ini ?

Code : Tout sélectionner

session.use_cookies = 1
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 983 Messages

12 juil. 2005, 15:31

Notice: Undefined index: type in c:\program files\easyphp1-8\www\o-liste.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\o-liste.php:3) in c:\program files\easyphp1-8\www\o-liste.php on line 5

comment dois etre configurer mon php.ini? :roll:
Le probleme ne vient pas d'easyphp mais de ton code qui n'est pas propre. 2 solutions s'offrent à toi:
- la facile mais pas propre: tu mets error_reporting à 0 dans ton php.ini
- la plus mieux propre: tu testes l'existence de tes variables avant de les utiliser.

;)
Edit: pour etre plus clair, l'erreur "Warning: Cannot modify header information" est due à la première erreur "Notice: Undefined index: type in c:\program files\easyphp1-8\www\o-liste.php on line 3".
Modifié en dernier par rami le 12 juil. 2005, 15:35, modifié 1 fois.

toony21
Invité n'ayant pas de compte PHPfrance

12 juil. 2005, 15:33

Oui!

[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
session.save_path = "${path}\tmp\"

; Whether to use cookies.
session.use_cookies = 1

; This option enables administrators to make their users invulnerable to
; attacks which involve passing session ids in URLs; defaults to 0.
; session.use_only_cookies = 1

; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

; Handler used to serialize data. php is the standard serializer of PHP.
session.serialize_handler = php

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 juil. 2005, 15:35

On est en train de résoudre pourquoi est-ce que les variables n'existent pas donc
- la facile mais pas propre: tu mets error_reporting à 0 dans ton php.ini
Et s'il a besoin de ces variable ?
- la plus mieux propre: tu testes l'existence de tes variables avant de les utiliser.
Même réponses, s'il a besoin des variables

Le problème n'est pas qu'elles n'existent pas tout le temps, mais jamais
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

toony21
Invité n'ayant pas de compte PHPfrance

12 juil. 2005, 16:02

et donc jedois faire quoi?
parce que caché les erreurs ne permmettra poas a mon code de sexecuté correctement...
Pourquoi est ce que mes variable ne sont pas reconnues??

alors que je le rapelle ca tourne TB sur Online!!

toony21
Invité n'ayant pas de compte PHPfrance

12 juil. 2005, 16:29

Comment se fait il que ses variables n'existent pas alors?

Elle sont rentrées dans un formulaire pourtant...

Mammouth du PHP | 983 Messages

12 juil. 2005, 17:03

Ca tourne sur online car error_reportong est à 0.

A chaque fois que tu utilises une variable $_POST, $_GET, $_SESSION..., il faut tester son existence avant:
<?
session_start(); // On démarre la session
if(isset($_SESSION['type']))
     $type=$_SESSION['type'];
else $type = null;

if ($type!="O"){
header ("Location: accueil-pro.php");
}
?>


toony21
Invité n'ayant pas de compte PHPfrance

13 juil. 2005, 09:27

OK merci. J'ai corrigé mon code mais je rencontre un autre problème maintenant :
les variables entre le formulaire et la page qui y fait référence ne s'affichent pas...

pourtant je test bien l'existence des variables mais elles sont vides...
2ème page:
<?
echo "ok";
if (isset($_POST['login'])){
	  $login=$_POST['login'];
}
else {
	  $login="";
}

?>

Mammouth du PHP | 983 Messages

13 juil. 2005, 19:15

Tu utilises bien la méthode POST dans ton formulaire? (method="POST" dans ta balise <form>)

JyLoO
Invité n'ayant pas de compte PHPfrance

17 oct. 2005, 08:18

Rien a voir >> register_globals est à off dans son php.ini

Faut apprendre à coder ;)