-1

情報が既にデータベースにある場合、ユーザー情報をデータベースに挿入するための PHP ファイルを作成しました"user is already exists"。フォームには「フルネーム」、「電子メール」、「電話」の 3 つのフィールドがあります。たとえば、これらの情報です。すでにデータベースにあるのは「myName」、「myEmail@yahoo.com」、「0123456789」です。ユーザーがこれらの文字を正確に入力すると、「ユーザーは既に存在します」というメッセージが表示されます。ただし、電話番号を (083 )0123456789 データベースに挿入されます。このエラーを修正するにはどうすればよいですか? ここにファイル register.php があります

<h1>register form</h1>
<?php
$labels=array("full_name"=>"Full Name",
                "email"=>"Email",
                "phone"=>"Phone");
echo "<form action='check_register.php' method='POST'>";
foreach($labels as $key =>$value)
{
    echo "$value <input type='text' name='$key'/><br/>";
}
echo "<input type='submit' value='submit'/>";
echo "</form>";
?>

check_register.php

<?php
$labels=array("full_name"=>"Full Name",
                "email"=>"Email",
                "phone"=>"Phone");
foreach($_POST as $key =>$value)
{
    if(empty($value))
    {
        $empty_value[]=$key;
    }
    elseif($key=="full_name")
    {
        if(!preg_match("/^[A-Za-z '-]{2,50}$/",$value))
        {
            $invalid_value[]=$key;
        }
    }
    elseif($key=="email")
    {
        if(!preg_match("/^[A-Za-z0-9]{5,20}+(@)[A-Za-z0-9]{5,20}(\.com)$/",$value))
        {
            $invalid_value[]=$key;
        }
    }
    elseif($key=="phone")
    {   
        if(!preg_match("/^(\(\d+\)|\d+\-)?\d{10,20}$/",$value))
        {
            $invalid_value[]=$key;
        }
    }
}

if(@sizeof($empty_value)>0 or @sizeof($invalid_value)>0)
{
    if(@sizeof($empty_value)>0)
    {
        echo "input ";
        foreach($empty_value as $key) //loop empty value
        {
            echo " $labels[$key] ";
        }
    }
    if(@sizeof($invalid_value)>0)
    {
        echo "<br/>invalid data ";
        foreach($invalid_value as $key) //loop invalid_value
        {
            echo " $labels[$key]    ";
        }
    }
    echo "<form action='$_SERVER[PHP_SELF]' method='POST'>";
    foreach($labels as $key =>$value)
    {
        echo "$value <input type='text' name='$key'/><br/>";
    }
    echo "<input type='submit' value='submit'/>";
    echo "</form>";
    }
else
    {
        $user='root';
        $host='localhost';
        $password='root';
        $dbname='pet';
        $connect=mysqli_connect($host,$user,$password,$dbname) or die("can't connect to server");
        foreach($labels as $key =>$value)
        {
            $good_data[$key]=strip_tags(trim($_POST[$key]));
            $good_data[$key]=mysqli_real_escape_string($connect,$good_data[$key]);
        }
        $check_exist="SELECT ";
        foreach($labels as $key =>$value)
        {
            $check_exist.=$key.",";
        }
        $check_exist=preg_replace("/phone,/","phone",$check_exist);
        $check_exist.=" FROM register WHERE ";
        $arrayValue=array();
        foreach($good_data as $key =>$value)
        {
            $arrayValue[]=$key."="."'$value'";
        }

        $check_exist.=join(" AND ",$arrayValue);
        $query=$check_exist;
        $result=mysqli_query($connect,$query);
        if(mysqli_num_rows($result))
        {
            echo "user already exist !";
            echo $check_exist;
            exit(); 
        }

        echo $check_exist;
        else
        {
        foreach($labels as $key =>$value)
            {
                $good_data[$key]=strip_tags(trim($_POST[$key]));
                    if($key=="phone")
                    {
                        $good_data[$key]=preg_replace("/(\(\d+\)|\d+\-)/","",$good_data[$key]);

                    }
                $good_data[$key]=mysqli_real_escape_string($connect,$good_data[$key]);
            }
            $query="INSERT INTO register ("; 
            foreach($good_data as $key =>$value)
            {
                $query.="$key,"; 
            }
            $query.= ") VALUES (";      
            $query=preg_replace("/,\)/",")",$query);
            foreach($good_data as $key =>$value)   
            {
                $query.="'$value',";
            }
            $query.=")";
            $query=preg_replace("/,\)/",")",$query);
            $result=mysqli_query($connect,$query) or die ("can't execute query.".mysqli_error($connect));
            echo "$query";
            echo "<h4>member inserted $query </h4>";        
        }
    }


?>
4

1 に答える 1