php未定义变量或重命名变量?

时间:2012-12-05 09:27:34

标签: php forms undefined session-variables

我构建了这个代码,来自各种来源的大杂烩,以及我称之为“完全沉浸式学习”的几周。换句话说,我不知道蹲下 php ,只是觉得我可以伪造它,但显然我不能。

Anywho,我知道我在下面做了什么会让几个看到它的人对我心爱的php所做的完全恐怖但是只用了2个星期的自我教育就无法帮助至少它现在只抛出三个通知,而不是它过去所做的所有警告,尖叫警告和致命错误。

我得到的最后一个错误是......

  

(!)注意:未定义的变量:第65行的E:\ wamp \ www \ complete-x013_php2 \ iframe1 \ contact.php中的error_name

     

(!)注意:未定义的变量:第77行的E:\ wamp \ www \ complete-x013_php2 \ iframe1 \ contact.php中的error_email

     

(!)注意:未定义的变量:第89行的E:\ wamp \ www \ complete-x013_php2 \ iframe1 \ contact.php中的error_code

<?php session_start(); ?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<meta http-equiv="Content-type" content="text/html; charset=utf-8">

<title></title>

<link rel="stylesheet" type="text/css" href="style.css" />

</head>

<body>

<span style="color: #000000; font-size: 85%; font-family: Verdana, Geneva, sans-serif;">

<?php

    if (isset($_POST['submit'])) {
    $error = "
    error_name,
    error_email,
    error_code
    ";

$name =     check_input($_POST['name']);
$email =    check_input($_POST['email']);
$how =      check_input($_POST['how']);
$ifother =  check_input($_POST['ifother']);
$code =     check_input($_POST['code']);
$submit =   check_input($_POST['submit']);

$_POST['name'] = trim($_POST['name']);
$_POST['name'] = stripslashes($_POST['name']);
$_POST['name'] = htmlspecialchars($_POST['name']);

$_POST['email'] = trim($_POST['email']);
$_POST['email'] = stripslashes($_POST['email']);
$_POST['email'] = htmlspecialchars($_POST['email']);

$_POST['how'] = trim($_POST['how']);
$_POST['how'] = stripslashes($_POST['how']);
$_POST['how'] = htmlspecialchars($_POST['how']);

$_POST['ifother'] = trim($_POST['ifother']);
$_POST['ifother'] = stripslashes($_POST['ifother']);
$_POST['ifother'] = htmlspecialchars($_POST['ifother']);

$_POST['code'] = trim($_POST['code']);
$_POST['code'] = stripslashes($_POST['code']);
$_POST['code'] = htmlspecialchars($_POST['code']);

$_POST['submit'] = trim($_POST['submit']);
$_POST['submit'] = stripslashes($_POST['submit']);
$_POST['submit'] = htmlspecialchars($_POST['submit']);

    if (!empty($_POST['name'])) {
    $name = check_input($_POST['name']);
    } else {
        $error .= "error_name";
        $error_name .= "Name is required.";
    }

    if (!empty($_POST['email'])) {
    $email = check_input($_POST['email']);

        if (!preg_match("/^[a-z0-9]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", $email)){ 
        $error .= "error_email";
        $error_email .= "E-mail address not valid.";
        }
    } else {
    $error .= "error_email";
    $error_email .= "E-mail address is required.";
    }

    if (!empty($_POST['code'])) {
    $code = check_input($_POST['code']);

        if (strtolower($_POST['code']) != 'black'){ 
        $error .= "error_code";
        $error_code .= "Code is BLACK.";
        }
    } else {
    $error .= "error_code";
    $error_code .= "Enter Code.";
    }

    if (empty($error)) {
    $from = 'From: ' . $name . ' <' . $email . '>';
    $to = "yourmail@host.com";
    $subject = "New Subscription Contact";
    $content = "

Newsletter Subsciption submitted by $name,

E-mail: $email


They were referred to us by: $how, $ifother

-END NOTIFICATION-

";
    $success = 
    mail($to,$subject,$content,$from);
    header('Location: thanks.php');
    exit;
    }

    }

function check_input($data, $problem='')
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
        if ($problem && strlen($data) == 0)
{
    show_error($problem);
}
    return $data;
}
?>

<div>

<form action="contact.php" method="post">

<center>

<table style="border: 0px solid black; border-collapse: collapse;">

<tr>
<td style="border: 0px solid black; height: 16px;" colspan="2">[<span style="color: #ff0000;">*</span>] Denotes a required field.</td>
</tr>

<tr>
<td style="border: 0px solid black; text-align: left; text-indent: 92px; height: 12px;" colspan="2" id="error">
<?php if (!empty($error_name)) { echo '<div  class="error">' . $error_name . '</div >'; } ?>
</td>
</tr>

<tr>
<td style="border: 0px solid black; vertical-align: top; text-align: left;">
<div style="margin-top: 2px;"><span style="color: #ff0000;">*</span><label>Name:</label></div></td>
<td style="border: 0px solid black;">
<input type="text" placeholder="John or Jane Doe" style="width: 269px;" name="name" value="<?php if ($_POST['name']) { echo $_POST['name']; } ?>" /></td>
</tr>

<tr>
<td style="border: 0px solid black; text-align: left; text-indent: 92px; height: 12px;" colspan="2" id="error">
<?php if (!empty($error_email)) { echo '<div  class="error">' . $error_email . '</div >'; } ?>
</td>
</tr>

<tr>
<td style="border: 0px solid black; vertical-align: top; text-align: left;">
<div style="margin-top: 2px;"><span style="color: #ff0000;">*</span><label>E-mail:</label></div></td>
<td style="border: 0px solid black;">
<input type="text" placeholder="yourmail@host.com" style="width: 269px;" name="email" value="<?php if ($_POST['email']) { echo $_POST['email']; } ?>" /></td>
</tr>

<tr>
<td style="border: 0px solid black; height: 12px;" colspan="2"></td>
</tr>

<tr>
<td style="border: 0px solid black; height: 12px;" colspan="2">

<div style="border: 0px solid black; float: left; margin-top: 1px;">How did you find us?</div>

<div style="border: 0px solid black; float: right;">        <select width="180" height="20" style="width: 180px;" name="how">
                            <option value=""> -- Please Select -- </option>
                            <option>Google</option>
                            <option>Yahoo</option>
                            <option>Link from a website</option>
                            <option>Word of mouth</option>
                            <option>Other</option>
                            </select></div>

</td>
</tr>

<tr>
<td style="border: 0px solid black; height: 12px;" colspan="2"></td>
</tr>

<tr>
<td style="border: 0px solid black; vertical-align: top; text-align: left; width: 80px;">
<div style="margin-top: 1px;"><label>If <i>Other</i>:</label></div></td>
<td style="border: 0px solid black;">
<textarea name="ifother" placeholder="If you chose 'link' or 'other'." style="width: 269px; height: 35px;"><?php if ($_POST['ifother']) { echo $_POST['ifother']; } ?></textarea></td>
</tr>

<tr>
<td style="border: 0px solid black; text-align: left; text-indent: 265px; height: 12px;" colspan="2" id="error">
<?php if (!empty($error_code)) { echo '<div class="error">' . $error_code . '</div>'; } ?>
</td>
</tr>

<tr>
<td style="border: 0px solid black;" colspan="2" >
  <div style="border: 0px solid black; float: left; height: 18px; margin-top: 2px;">
   <span style="color: #ff0000;">*</span>What color is this '<b>black</b>' text?    </div>
   <div style="border: 0px solid black; float: right;"><input type="text" placeholder="code" style="width: 90px;" name="code" value="<?php if ($_POST['code']) { echo $_POST['code']; } ?>" /></div>
   </td>
</tr>

<tr>
   <td style="border: 0px solid black;" colspan="2"><div style="border: 0px solid black; height: 10px;"></div>
   </td>
</tr>
<tr>
   <td style="border: 0px solid black; text-align: right;" colspan="2"><input type="submit" style="width: 95px;" name="submit" value="Subscribe!" />
       </td>
</tr>
</table>
</center>
 </form>
    </div>
    </span>
    </body>
</html>

3 个答案:

答案 0 :(得分:6)

$error_email .= "E-mail address not valid.";

=&GT;

$error_email = "E-mail address not valid.";

答案 1 :(得分:1)

您需要添加以下内容:

$error_code = $error_email = $error_name = "";

紧随其后:

$error = "
    error_name,
    error_email,
    error_code
    ";

像这样:

$error = "
    error_name,
    error_email,
    error_code
    ";
$error_code = $error_email = $error_name = "";

由于您在未定义的var。

上使用。=,因此会触发通知

答案 2 :(得分:1)

您还必须定义error_name和error_email以及error_code

试试这个

   if (isset($_POST['submit'])) {
   $error_name ="";
   $error_email ="" ;
   $error_code= "";
    $error = "";
   $name =     check_input($_POST['name']);
 .....
 ....