我的数据库没有保存从我的网站发送到使用php发送到数据库的电子邮件

时间:2014-06-10 15:57:17

标签: php mysql sql email post

所以我有这个"游戏玩家"网站和我有一个表格,人们可以用来向我发送关于他们想要对我和我的竞技场团队玩的游戏的请求。到目前为止,我刚刚管理,所以php发送给我姓名,消息,服务器和游戏名称,但它没有保存电子邮件,它在我的数据库中只是空白,其中电子邮件列是,任何我做错了什么?

我将发送将信息发送到数据库的php代码,以及是否可以使用验证。

$con=mysqli_connect("DBadress","DBNAME","DBPW","DB");

    //connectar till min DB
if (mysqli_connect_errno()) {
echo "Misslyckades att ansluta till MySQL: " . mysqli_connect_error();
}

$Namn = mysqli_real_escape_string($con, $_POST['Namn']);

$Epost = mysqli_real_escape_string($con, $_POST['Epost']);

$Pers = mysqli_real_escape_string($con, $_POST['Pers']);

$Ingame = mysqli_real_escape_string($con, $_POST['Ingame']);

$Server = mysqli_real_escape_string($con, $_POST['Server']);

$Meddelande = mysqli_real_escape_string($con, $_POST['Meddelande']);
   //escape variables för säkerhet

 $sql="INSERT INTO Bokningar (Namn, Pers, Epost, Ingame, Server, Meddelande)
 VALUES ('$Namn', '$Pers', '$Epost', '$Ingame', '$Server', '$Meddelande')";

 if (!mysqli_query($con,$sql)) {
 die ('Error: ' . mysqli_error ($con));
 }
 echo "Meddelande sparat";

 mysqli_close($con);

否则此代码对我来说非常适合

这是验证码

function check_email_address($Epost) {

    if (!preg_match("/^[^@]{1,64}@[^@]{1,255}$/", $Epost)) {

        return false;
    }

    $email_array = explode("@", $Epost);
    $local_array = explode(".", $Epost_array[0]);
    for ($i = 0; $i < sizeof($local_array); $i++) {
        if (!preg_match("/^(([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-][A-Za-z0-9!#$%&'*+\/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $local_array[$i])) {
            return false;
        }
    }
    if (!preg_match("/^\[?[0-9\.]+\]?$/", $Epost_array[1])) {
        $domain_array = explode(".", $Epost_array[1]);
        if (sizeof($domain_array) < 2) {
            return false;
        }
        for ($i = 0; $i < sizeof($domain_array); $i++) {
            if (!preg_match("/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$/", $domain_array[$i])) {
                return false;
            }
        }
    }

    return true;
}

2 个答案:

答案 0 :(得分:0)

您应该使用预备声明

if(check_email_address($_POST['Epost'])){

    /* check connection */
    if (mysqli_connect_errno()) {
        echo( "Misslyckades att ansluta till MySQL: " . mysqli_connect_error());
        exit();
    }

 $query = "INSERT INTO Bokningar (Namn, Pers, Epost, Ingame, Server, Meddelande) 
           VALUES (?, ?, ?, ?, ?, ?)";

    /* create a prepared statement */
    if ($stmt = mysqli_prepare($con, $query)) {

        /* bind parameters for markers */
        mysqli_stmt_bind_param($stmt, "ssssss", 
                               $_POST['Namn'], $_POST['Epost'], 
                               $_POST['Pers'],$_POST['Ingame'], 
                               $_POST['Server'], $_POST['Meddelande']);

        /* execute query */
        mysqli_stmt_execute($stmt);
    }

    /* close connection */
    mysqli_close($con);
}else{
    echo( "Email is not valid!!");
    exit();
}

答案 1 :(得分:0)

只是想说,它现在就像一个魅力,我在我的代码中有这么小的错误,这就是为什么它的dident工作。我喜欢我的html表单中的name-pers-email以及值,但是在real_escape中它是name-email-pers而我的数据库中的tabel是name-pers-email所以不得不更改php代码中的值,所以他们是在正确的车道可以这么说,我的英语是最好的,但我希望你和所有其他人明白我在这里说什么:)如果你再看看我的代码你可以看到错误:)谢谢你的代码:)会给你一个@meda投票,但我没有它的代表:)