Au secours ... dernier avis avant suicide

Répondre
i M@N
le 12/10/2003 à 15:14
i M@N
Hello !

J'ai un script qui utilise les sessions pour le login.

Le script fonctionnait nickel avant que j'installe la version 1.7 de EasyPHP, et depuis il n'enregistre plus les variables de sessions dans le fichier de session, et il n'affiche plus l'alerte lorsque un des champs du formulaire n'a pas été rempli.

Note importante : dans mon php.ini, les register global sont à off (par défaut dans la 1.7) et je souhaite rester à off et coder mes scripts de façon à ce qu'ils fonctionnent aussi bien en on qu'en off.

Voici mon formulaire :

<html>
<body>
<center>
<b>Pour profiter de l'intégralité du site (sélections, riddims, galleries et images de sounds),<br>merci d'entrez votre prénom et votre email.</b>
<table>
<form method="post" action="./login.php">
<table border="0">
<tr>
<td><font face="tahoma" size="1"><u>Prénom :</u></td>
<td>
<input type="text" name="cPrenom" size="30" value="<? echo $_SESSION['prenom']; ?>">
</td>
</tr>
<tr>
<td><font face="tahoma" size="1"><u>Email :</u></td>
<td>
<input type="text" name="cEmail" size="30" value="<? echo $_SESSION['email']; ?>">
</td>
</tr>
<tr>
<td> </td>
<td>
<center><INPUT TYPE=submit value="login"></center>
</td>
</tr>
</table>
</form>
</body>
</html>

Voici mon fichier login.php :

<?

function email_OK ($email) {
$test_mail=eregi('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$',$email);

if ($test_mail) {
return TRUE;
}


else {
return FALSE;
}
}


// fonction nous permettant de faire des redirections
function redirection($url){
if (headers_sent()){
print('<meta http-equiv="refresh" content="0;URL='.$url.'">');
}
else {
header("Location: $url");
}
}


// on teste le contenu de la variable $cPrenom
if ($cPrenom=="") {
echo '<body onLoad="alert(\'Aucun prénom de précisé...\')">';
redirection('./iframe.php?page=30');
exit;
}

// on teste le contenu de la variable $cEmail
if ($cEmail=="") {
echo '<body onLoad="alert(\'Aucun email de précisé...\')">';
redirection('./iframe.php?page=30');
exit;
}

else {

// récupération de l'heure courante
$date = date("Y-m-d H:i:s");

// récupération de l'adresse IP du client (on cherche d'abord à savoir si il est derrière un proxy)
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
elseif(isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
else {
$ip = $_SERVER['REMOTE_ADDR'];
}
// récupération du domaine du client
$host = gethostbyaddr($ip);

// récupération du navigateur et de l'OS du client
$navigateur = $_SERVER['HTTP_USER_AGENT'];

// récupération du REFERER
$nom_domaine = $_SERVER['HTTP_HOST'];
if ($nom_domaine != "imanweb.free.fr") {
$referer = $_SERVER['HTTP_REFERER'];
}
else {
$referer ="";
}

if (email_OK ($cEmail)) {

session_start();

$prenom = $cPrenom;
$email = $cEmail;

session_register("prenom");
session_register("email");
session_register("date");
session_register("ip");
session_register("host");
session_register("navigateur");
session_register("referer");

echo '<head><SCRIPT LANGUAGE="JavaScript">if (parent.frames.length = 1 ){ parent.document.location.href = "http://imanweb.free.fr"; }</SCRIPT></head>';

}

else {
echo '<body onLoad="alert(\'Email invalide...\')">';
redirection('./iframe.php?page=30');
exit;
}
}

?>

Voici mon php.ini :

http://www.lephpfacile.com/wall/lire_wall.php?wall=873

Merci de m'aider parce que là ça fait 3 jours que je galère ...

@+...
One Love, One Heart, One Unity.
LA GLOBULE
le 12/10/2003 à 16:24
LA GLOBULE
Pour tes sessions, il faut enregistrer les variables de sessions comme ceci :

$_SESSION['prenom'] = $prenom;
...

Pour le tests des variables, il faut les tester avec isset et empty.
LA GLOBULE
le 12/10/2003 à 16:59
LA GLOBULE
Ah oui, faut aussi utiliser le tableau $_POST pour tester tes var, au lieu de les appeler directement smiley
i M@N
le 12/10/2003 à 17:21
i M@N
reuh ...

Bon LA_GLOBULE chui super déçu ... personne est foutu de me MONTRER comment faire.

Je sais encore récupérer les variables d'un formulaire avec $_POST ... chui pas boulet à ce point.

Pour enregistrer les sessions j'ai pas réussi.

Moi tout ce que je voulais c'était que quelqu'un me MONTRE ... c'est pas dur ... il prends 10 minutes, copie/colle mon code et il me fais voir comment on code pour que le script fonctionne aussi bien en register global à on et à off.

Mais bon ... p'tet j'en demande trop.

@+...
One Love, One Heart, One Unity.
zebden
le 13/10/2003 à 14:02
zebden
A mon avis ce qu'il veut dire c'est :

$prenom = $_POST['cprenom'];
session register($prenom);

ensuite pour reutiliser $prenom

$prenom = $_SESSION['prenom'];

comme pour l'asp en gros .. je viens d'installer easyphp1.7 donc j'ai pas encore tester alors essai comme ça declare bien tes var avant .. essai avec l'echo pour voir si la var existe .. si c'est pas ça je testerai chez moi
zebdinou pour les intimes / Blog : http://www.zebden.fr
google
le 13/10/2003 à 15:36
google
fo pas te suicider im@n!!
keske je vé devenir alors???
c koi &ccedil;aaa ?!!?
i M@N
le 13/10/2003 à 22:40
i M@N
Hello !

Bon ça commence à s'éclaircir cette affaire ...

<?

if (isset($_POST['cPrenom'])) $cPrenom = $_POST['cPrenom']; else $cPrenom = "";
if (isset($_POST['cEmail'])) $cEmail = $_POST['cEmail']; else $cEmail = "";

function email_OK ($email) {
$test_mail=eregi('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$',$email);

if ($test_mail) {
return TRUE;
}


else {
return FALSE;
}
}


// fonction nous permettant de faire des redirections
function redirection($url){
if (headers_sent()){
print('<meta http-equiv="refresh" content="0;URL='.$url.'">');
}
else {
header("Location: $url");
}
}


// on teste le contenu de la variable $cPrenom
if ($cPrenom=="") {
echo '<body onLoad="alert(\'Aucun prénom de précisé...\')">';
redirection('./iframe.php?page=30');
exit;
}

// on teste le contenu de la variable $cEmail
if ($cEmail=="") {
echo '<body onLoad="alert(\'Aucun email de précisé...\')">';
redirection('./iframe.php?page=30');
exit;
}

else {

// récupération de l'heure courante
$date = date("Y-m-d H:i:s");

// récupération de l'adresse IP du client (on cherche d'abord à savoir si il est derrière un proxy)
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
elseif(isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
else {
$ip = $_SERVER['REMOTE_ADDR'];
}
// récupération du domaine du client
$host = gethostbyaddr($ip);

// récupération du navigateur et de l'OS du client
$navigateur = $_SERVER['HTTP_USER_AGENT'];

// récupération du REFERER

$nom_domaine = $_SERVER['HTTP_HOST'];
if ($nom_domaine != "imanweb.free.fr") {
$referer = $_SERVER['HTTP_REFERER'];
}
else {
$referer ="";
}

if (email_OK ($cEmail)) {

session_start();

$prenom = $_POST['cPrenom'];
$email = $_POST['cEmail'];

$_SESSION['prenom'] = $prenom;
$_SESSION['email'] = $email;
$_SESSION['date'] = $date;
$_SESSION['ip'] = $ip;
$_SESSION['host'] = $host;
$_SESSION['navigateur'] = $navigateur;
$_SESSION['referer'] = $referer;

echo '<head><SCRIPT LANGUAGE="JavaScript">if (parent.frames.length = 1 ){ parent.document.location.href = "http://imanweb.free.fr"; }</SCRIPT></head>';

}

else {
echo '<body onLoad="alert(\'Email invalide...\')">';
redirection('./iframe.php?page=30');
exit;
}
}

?>

Vala comment il fallait coder cette page pour qu'elle fonctionne aussi bien en register_global à on et à off. Alors c'était p'tet évident pour certains, mais pas pour moi.

Un grand merci à LA_GLOBULE, à Zebden et à ma pitite Google qui s'inquiète ... t'inquiète pas Google, je parlais du suicide de ma version 1.7 de EasyPHP. smiley

@+...
One Love, One Heart, One Unity.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours