Page 1 sur 1

Probleme entre easyphp 1.7 et easyphp 1.8

Posté : 12 nov. 2006, 16:44
par 2501gigi
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

Posté : 12 nov. 2006, 17:26
par Cyrano
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"

Posté : 12 nov. 2006, 18:04
par 2501gigi
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?

Posté : 12 nov. 2006, 18:06
par 2501gigi
Je viend de regarder sur mon ordi bureau et mon register_global et sur off.

Posté : 12 nov. 2006, 18:37
par Cyrano
Alors fais afficher la source sur le portable et vérifie si tu n'aurais pas un message d'erreur envoyé avant le header.

Posté : 12 nov. 2006, 19:23
par 2501gigi
Il n'y a pas erreur.

Posté : 13 nov. 2006, 16:16
par 2501gigi
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?

Posté : 13 nov. 2006, 17:26
par Cyrano
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.

Posté : 13 nov. 2006, 18:21
par 2501gigi
Bon merci j'ai essayer ca marche,mais c'est quand meme bizarre cette histoire.

Posté : 13 nov. 2006, 18:29
par Ryle
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

Posté : 15 nov. 2006, 16:46
par 2501gigi
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.