Phpmyadmin php寄存器系统错误

Phpmyadmin php寄存器系统错误,phpmyadmin,xampp,registration,php,Phpmyadmin,Xampp,Registration,Php,我试图使用xampp在php中创建一个注册页面,但我遇到了一个问题。运行php文件时,会出现以下错误: <input type='submit' name='submit' value='register' /> </form> 注意:未定义的索引:C:\xampp\htdocs\register.php中的用户名 第3行 <input type='submit' name='submit' value='register' /> <

我试图使用xampp在php中创建一个注册页面,但我遇到了一个问题。运行php文件时,会出现以下错误:

    <input type='submit' name='submit' value='register' />
</form> 
注意:未定义的索引:C:\xampp\htdocs\register.php中的用户名 第3行

    <input type='submit' name='submit' value='register' />
</form> 
注意:未定义的索引:C:\xampp\htdocs\register.php中的username 在线4

    <input type='submit' name='submit' value='register' />
</form> 
注意:未定义的索引:C:\xampp\htdocs\register.php中的UserMail 第5行

    <input type='submit' name='submit' value='register' />
</form> 
注意:C:\xampp\htdocs\register.php中未定义的索引:UserPassword 第6行

    <input type='submit' name='submit' value='register' />
</form> 
注意:未定义的索引:C:\xampp\htdocs\register.php中的UserTel 第7行

    <input type='submit' name='submit' value='register' />
</form> 
警告:require(class.phpmailer.php)[function.require]:未能 开放流:C:\xampp\htdocs\register.php中没有这样的文件或目录 在线24

    <input type='submit' name='submit' value='register' />
</form> 
致命错误:require()[function.require]:打开失败 中的“class.phpmailer.php”(include_path=”;C:\xampp\php\PEAR) 第24行的C:\xampp\htdocs\register.php

    <input type='submit' name='submit' value='register' />
</form> 
我的php文件register.php:

  <?php
$username=$_POST['UserName'];
$usersurname=$_POST['UserSurname'];
$usermail=$_POST['UserMail'];
$userpass=$_POST['UserPassword'];
$usertelephone=$_POST['UserTel']; 
    $con = mysql_connect("localhost","root","rockenpeace");
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("dbe", $con);

mysql_query("INSERT INTO user (UserName,UserSurname,UserMail, UserPassword, UserTel) 
        VALUES('$username','$usersurname','$usermail','$userpass','$usertelephone')");

mysql_close($con);

try
{
    require("class.phpmailer.php");
    $mail = new PHPMailer();   
    $mail->IsSMTP();
    $mail->Mailer = "smtp";
    $mail->Host = "ssl://smtp.gmail.com";
    $mail->Port = 465;
    $mail->SMTPAuth = true;
    $mail->CharSet="utf-8";
    $mail->Username = "user@gmail.com";
    $mail->Password = "password";
    $mail->From     = "user@gmail.com";
    $mail->FromName="DBE Yazılım";
    $mail->AddAddress($_POST['usermail']); 
    $mail->Subject  = "Registration Information";
    $mail->Body     = "Hello your password is " . $userpass;
    //$mail->AddAttachment($path);
    $mail->Send();
    echo 'Message has been sent.';  
}
catch(Exception $e)
{
    echo 'hata'.$e->getMessage();
}
header("location:confirmation.php"); ?>
    <input type='submit' name='submit' value='register' />
</form> 
嗯,看起来

    <input type='submit' name='submit' value='register' />
</form> 
a) 您的
$\u POST
superglobal是空的(或者至少不包含您认为的内容)。在这种情况下,这是第一件值得怀疑的事情。运行
print\r($\u POST)
查看其中的内容

    <input type='submit' name='submit' value='register' />
</form> 
假设POST/GET VAR即将到来是不安全的。通过
isset()
检查此项,并检查它们是否包含您认为应该包含的内容。简言之,我们谈论的是验证

    <input type='submit' name='submit' value='register' />
</form> 
b) 听起来你的包含路径是错误的。同样,这很容易检查。运行
echo file_exists('path/to/include')
-如果没有看到
1
,则路径错误

用于验证$\u POST数组中是否存在密钥

    <input type='submit' name='submit' value='register' />
</form> 
对于失败的包含,这意味着文件不在您的中,因此您可以使用(注意这可能会影响其他相对包含),或者使用
绝对路径

    <input type='submit' name='submit' value='register' />
</form> 
最后,在输入变量上使用,否则很容易受到SQL注入的影响

    <input type='submit' name='submit' value='register' />
</form> 
样本

if (!isset($_POST['userName'], $_POST['key2'], .....)) {
   // handle this error, you don't have the correct inputs
} else {

   // Validate inputs

   // Escape inputs prior to inserting into database
   $username = mysql_real_escape_string($_POST['userName']);
   ...
   ...

   // Your queries
}
    <input type='submit' name='submit' value='register' />
</form> 

如果出现以下情况,请签入其表单操作为此页面的页面

    <input type='submit' name='submit' value='register' />
</form> 
该页面中输入标记的name属性与您在此处尝试检索的内容相同

    <input type='submit' name='submit' value='register' />
</form> 

    <input type='submit' name='submit' value='register' />
</form> 
--更新

    <input type='submit' name='submit' value='register' />
</form> 
在:

    <input type='submit' name='submit' value='register' />
</form> 
带有
empty()
的示例:

    <input type='submit' name='submit' value='register' />
</form> 
if(isset($_POST['UserName'])) $username = $_POST['UserName'];
else die("Username variable is not set.");
if(!empty($_POST['UserName'])) $username = $_POST['UserName'];
else die("Username variable is empty.");

您应该考虑的另一件事是,在SQL查询中使用字符串之前,应该使用

    <input type='submit' name='submit' value='register' />
</form> 
例如:

    <input type='submit' name='submit' value='register' />
</form> 
$username = mysql_real_escape_string($_POST['UserName']);

您可能还希望将与转义结合使用。

在php中运行print\r($\u POST)时,它会写入数组()。抱歉,我是php初学者。如果我犯了错误,请警告我。您刚刚提供了所有您的smtp信息。我为您编辑了它。如果它正在编写数组(),则没有表单数据传递给它。您也应该向我们显示您的标记。@Martin太糟糕了,它仍在修订历史记录中…=)很抱歉,我无法添加整个html标记:)但是我在我的html页面中添加了输入标记:当我运行echo file_exists('path/to/include')时,我看不到任何更改。如果
file_exists(…)
没有输出
1
,那么文件的路径是错误的,正如我所说的,如果(!isset($\u POST['userName'),…)当我使用if(设置($\u POST['UserName'))$UserName=$\u POST['UserName'];否则($UserName变量未设置。)时;它会写死亡消息。你认为我在html页面中的输入标记有错误吗?我的输入标记:@rockenpeace是。我已经用解决方案编辑了我的答案,请看顶部。我已根据$\u帖子名称更改了名称属性。例如,name=“UserName”但它仍然给出了死亡信息。我在html页面中重写了名称属性,但仍然有相同的错误。您是否将变量包含在
中?是的,我已将该表单包含在内:但我的方法部分与您不同。您的方法是
get将其更改为post method=“post”
我已将我的方法从“获取”更改为“发布”,但仍然存在相同的错误。
    <input type='submit' name='submit' value='register' />
</form>