Probleme entre easyphp 1.7 et easyphp 1.8

Eléphant du PHP | 258 Messages

12 nov. 2006, 16:44

Bon voila je suis en train de faire un petit site pour my mais j'ai un soucis, sur mon ordinateur de bureau j'ai installer easyphp 1.7 et sur mon ordi portable j'ai installer easyphp 1.8.

J'ai cette instruction qui marche tres bien sur mon ordi de burau mais qui ne marche pas sur mon ordi portable et qui m'affiche :

Warning: Cannot modify header information - headers already sent by (output started at
c:\program files\easyphp1-8\www\sitedebase\admin\identadmin.php:27) in c:\program files\easyphp1-8\www\sitedebase\
admin\identadmin.php on line 115

Voici l'instruction en question :
<?php				
if ($BidentAdmin=="Valider")
{
 if (($Mtsecret==$BonMtsecret) and ($Mtpasse==$BonMtpasse))
 {
 header("Location: indexAdmin.php");
 }
 else { echo "<br>Votre mot secret ou votre mot de passe et incorect veuillez réessayé.";}
}
?>
Quelqu'un a une idee?

Merci

Mammouth du PHP | 19672 Messages

12 nov. 2006, 17:26

Oui, il y a des chances pour que sur ton ordinateur de bureau la directive register_globals soit à ON alors que sur le portable elle est à OFF. Or aucune de tes variables ne sont initialisées. Je présume qu'elles proviennent d'un formulaire, elle sont récupérées dans le premier cas, mais inconnue sur le portable.

Tu dois initialiser tes variable avec une structure du style:
$mavariable = (isset($_POST['mavariable'])) ? $_POST['mavariable'] : "";
Où "mavariable" correspond au nom du champ du ton formulaire. Remplacer $_POST par $_GET si l'attribut "method" de ta balise <form> vaut "get" au lieu de "post"
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 258 Messages

12 nov. 2006, 18:04

Salut bon pour le register_globals je n'ai pas regarder mais pour l'initialisation je l'avait fait.

J'ai recopier le code de mon pc bureau sur mon portable et sur les deux les variable sont initailiser comme sa :
<?php
mysql_select_db($database_Debaseconnect, $Debaseconnect);
$query_identAdmin = "SELECT * FROM tidentadmin";
$identAdmin = mysql_query($query_identAdmin, $Debaseconnect) or die(mysql_error());
$row_identAdmin = mysql_fetch_assoc($identAdmin);
$totalRows_identAdmin = mysql_num_rows($identAdmin);

mysql_select_db($database_Debaseconnect, $Debaseconnect);
$query_textbienvenu = "SELECT Tbien FROM tbienvenu";
$textbienvenu = mysql_query($query_textbienvenu, $Debaseconnect) or die(mysql_error());
$row_textbienvenu = mysql_fetch_assoc($textbienvenu);
$totalRows_textbienvenu = mysql_num_rows($textbienvenu);

$BonMtsecret = $row_identAdmin['mds'];
$BonMtpasse = $row_identAdmin['mdp'];

if (!isset($_POST['BidentAdmin'])) $BidentAdmin=""; else $BidentAdmin = $_POST['BidentAdmin'];
if (!isset($_POST['Mtsecret'])) $Mtsecret=""; else $Mtsecret = $_POST['Mtsecret'];
if (!isset($_POST['Mtpasse'])) $Mtpasse=""; else $Mtpasse = $_POST['Mtpasse'];
?>
Pour le register_global c'est dans php.ini c'est sa et il vaut mieux qu'il soit sur off ou on?

Eléphant du PHP | 258 Messages

12 nov. 2006, 18:06

Je viend de regarder sur mon ordi bureau et mon register_global et sur off.

Mammouth du PHP | 19672 Messages

12 nov. 2006, 18:37

Alors fais afficher la source sur le portable et vérifie si tu n'aurais pas un message d'erreur envoyé avant le header.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 258 Messages

12 nov. 2006, 19:23

Il n'y a pas erreur.

Eléphant du PHP | 258 Messages

13 nov. 2006, 16:16

Par contre si j'utiliser a la place du header un gotoURL.

Est ce que sa marcherais.

Par contre je sais pas si c'est du java ou du php et je ne sais pas la syntaxe.

Une idée?

Mammouth du PHP | 19672 Messages

13 nov. 2006, 17:26

gotoURL n'existe pas en PHP à ma connaissance. donc la solution si des éléments ont déjà été envoyés vers le navigateur, c'est une redirection en JavaScript.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 258 Messages

13 nov. 2006, 18:21

Bon merci j'ai essayer ca marche,mais c'est quand meme bizarre cette histoire.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 nov. 2006, 18:29

Si ton code est divisé en deux parties comme ta présentation laisse le suggéré :
<?php 
...
if (!isset($_POST['BidentAdmin'])) $BidentAdmin=""; else $BidentAdmin = $_POST['BidentAdmin']; 
if (!isset($_POST['Mtsecret'])) $Mtsecret=""; else $Mtsecret = $_POST['Mtsecret']; 
if (!isset($_POST['Mtpasse'])) $Mtpasse=""; else $Mtpasse = $_POST['Mtpasse']; 
?>
<?php                 
if ($BidentAdmin=="Valider") { 
 if (($Mtsecret==$BonMtsecret) and ($Mtpasse==$BonMtpasse))  
   header("Location: indexAdmin.php"); 
 else 
   echo "<br>Votre mot secret ou votre mot de passe et incorect veuillez réessayé.";
} 
?>
C'est tout à fait normal :)
Le moindre espace ou retour à la ligne que tu as entre les deux parties " ?> ... <?php " est envoyé au navigateur empêchant ensuite l'envoi d'un nouveau header
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 258 Messages

15 nov. 2006, 16:46

Oui mais pourquoi alors sa marche sur mon pc bureau et pas mon portable.

Les deux codes sont identique enfin plus m'intenant puisque je l'ai modifier sur mon portable pour que sa marche.