2010-10-29 3 views
0

Remarque: Indéfini index: sujet dans /var/www/mailer.php à la ligne 12 Remarque: Indéfini index: message dans /var/www/mailer.php à la ligne 13 Remarque: Indéfini: dans /var/www/mailer.php à la ligne 14 Remarque: Indéfini index: verif_box dans /var/www/mailer.php à la ligne 15 Remarque: Indéfini index: tntcon dans /var/www/mailer.php on ligne 23 pas de variables reçues, cette page ne peut pas être directement accessiblePHP - Erreur "Avis: Indéfini"

eST lE CODE CI-DESSOUS

<?php 

ini_set('display_errors',1); 
error_reporting(E_ALL|E_STRICT); 

// ----------------------------------------- 
// The Web Help .com 
// ----------------------------------------- 
// remember to replace [email protected] with your own email address lower in this code. 

// load the variables form address bar 
$subject = $_POST["subject"]; 
$message = $_POST["message"]; 
$from = $_POST["from"]; 
$verif_box = $_POST["verif_box"]; 

// remove the backslashes that normally appears when entering " or ' 
$message = stripslashes($message); 
$subject = stripslashes($subject); 
$from = stripslashes($from); 

// check to see if verificaton code was correct 
if(md5($verif_box).'a4xn' == $_COOKIE['tntcon']){ 
    // if verification code was correct send the message and show this page 
    mail("[email protected]", 'TheWebHelp.com Form: '.$subject, $_SERVER['REMOTE_ADDR']."\n\n".$message, "From: $from"); 
    // delete the cookie so it cannot sent again by refreshing this page 
    setcookie('tntcon',''); 
} else if(isset($message) and $message!=""){ 
    // if verification code was incorrect then return to contact page and show error 
    header("Location:".$_SERVER['HTTP_REFERER']."?subject=$subject&from=$from&message=$message&wrong_code=true"); 
    exit; 
} else { 
    echo "no variables received, this page cannot be accessed directly"; 
    exit; 
    } 
?> 
+0

* (tipp) * L'utilisation de 'error_reporting (-1);' montrera toutes les erreurs possibles, même lorsque de nouveaux niveaux et constantes seront ajoutés dans les futures versions de PHP. – Gordon

+0

jamais entendu parler de s'il vous plaît?: D seconde, theese sont Avis - pas d'erreurs, vous essayez probablement d'accéder à des parties de $ _POST, qui n'existent pas – Hannes

Répondre

0

l'erreur est tout simplement parce que le message $ array _POST n'a pas clé appelée "message". Cela vient probablement du fait que le formulaire n'a pas été soumis. L'erreur est seulement un avis et n'empêchera pas le programme de fonctionner.

0

Vous devriez vérifier ce que contient $_POST avant d'adresser certains champs particuliers, jetez un oeil à la fonction isset. Ou tout simplement désactiver display_errors;)

+0

"Ou simplement désactiver' display_errors';) "=> Je recommanderais que pour faire un vieux/application PHP merdique de travailler sur un serveur récent ... –

+0

@Frosty, je recommande que sur tout serveur de production;) vous ne voulez pas afficher les erreurs PHP à vos visiteurs :) Ancien code sur le nouveau PHP, oui, des tonnes de avis désapprouvés. Mais je déteste parfois vérifier via isset et ajouter un '@' avant '$ _POST' pour éviter ces avis. – kovshenin

+0

Je parlais du serveur de dev évidemment, puisque cacher des notices n'est généralement pas une bonne pratique. Mais je suis d'accord que parfois vérifier avec 'isset()' est vraiment ennuyeux :-) –

0

Vérifiez les données envoyées par l'utilisateur

$subject = (isset($_POST["subject"]) ? $_POST["subject"] : ''); 
$message = (isset($_POST["message"]) ? $_POST["message"] : ''); 
$from = (isset($_POST["from"]) ? $_POST["from"] : ''); 
$verif_box = (isset($_POST["verif_box"]) ? $_POST["verif_box"] : ''); 

Vous pouvez même faire votre propre fonction pour faire

function checkPost($fieldname) 
{ 
    return (isset($_POST[$fieldname]) ? $_POST[$fieldname] : ''); 
} 

Et puis faire

$subject = checkPost("subject"); 

Je recommande également de vérifier les champs POST requis

if (!isset($_POST["xxx"]) || trim($_POST["xxx"]) == '') 
{ 
    // throw exception, display error... 
} 

etc.

Pour votre information, au lieu d'utiliser stripslashes() pour éviter « magic_quotes », vous pouvez utiliser une fonction simple comme celle-ci http://snippets.dzone.com/posts/show/5256 qui fera le travail pour tous les domaines.

0

Il semble que vous appeliez ce fichier PHP sans soumettre de formulaire via la méthode POST. Assurez-vous que votre formulaire courriel a l'ensemble une bonne méthode:

<form method="POST" action="yourfile.php"> 
etc. 
</form> 

Vous devez également désinfectez l'entrée d'utilisateur avant d'appeler la poste() (.. I e supprimer les nouvelles lignes et balises), sinon vous appelez des ennuis.

+0

Can ... tout le monde change le code ci-dessus, ce qui fonctionnera pour moi ... et laissez-moi savoir la même chose ... s'il vous plaît – AON

0

Vos tableaux $ _POST et $ _COOKIE ne contiennent pas ces index.

Do:

print_r($_POST); 
print_r($_COOKIE); 

pour voir ce qui est contenu dans ces tableaux

0
foreach(array('subject', 'message', 'from', 'verif_box') as $val) 
{ 
    if (isset($_POST[$val])) 
    { 
     $$val = trim($_POST[$val]); 
     continue; 
    } 

    // some sort of error checking, like telling the end user that 
    // not all fields were correctly given 
} 
0
//checking if array elements are set and changing variables values if so 
$subject = isset($_POST["subject"])?$_POST["subject"]:null; 
$message = isset($_POST["message"])?$_POST["message"]:null; 
$from = isset($_POST["from"])?$_POST["from"]:null; 
$verif_box = isset($_POST["verif_box"])?$_POST["verif_box"]:null; 

// check to see if verificaton code was correct and if cookie value on 'tntcon' is set 
if(isset($_COOKIE['tntcon']) && md5($verif_box).'a4xn' == $_COOKIE['tntcon']){ 

Les changements sont sur les lignes 12-15 et 23.

+0

à propos de l'affichage des lignes modifiées, avec peut-être 1-2 lignes avant et après pour le contexte? –

+0

Vous avez raison, merci. – Constantine

1

Vous essayez pour accéder à des parties d'une variable qui n'existent pas. Vous voudrez peut-être vérifier avant de les utiliser, s'ils existent.

Questions connexes