检查此电子邮件是否已具有帐户功能不适用于PHP HTML和MySQL

检查此电子邮件是否已具有帐户功能不适用于PHP HTML和MySQL,php,html,mysql,Php,Html,Mysql,我有以下代码: <meta charset="UTF-8"> <?php include_once 'init/init.funcs.php'; function emaili_pikkus(){ global $email; if (strlen($email)>45){ echo 'e-mail ei tohi olla pikem kui 45 tähemärki'; } else{ parooli_pikkus(); } } fun

我有以下代码:

<meta charset="UTF-8">

<?php

include_once 'init/init.funcs.php';

function emaili_pikkus(){
global $email;
if (strlen($email)>45){
    echo 'e-mail ei tohi olla pikem kui 45 tähemärki';
}
else{
    parooli_pikkus();
    }
}

function parooli_pikkus()
{
global $parool;
$pikkus = strlen($parool);
if ($pikkus<6){
    echo "Parool peab olema vähemalt 6 tähemärki pikk";
    }
else {
    varasem_olemasolu();
}

}

function varasem_olemasolu()
{

global $email;

if(!empty($_POST['email']))
{
    $query = mysql_query("SELECT * FROM kasutajad ") or die(mysql_error());
    $array = mysql_fetch_array($query);
    if(in_array($email, $array)) 
    {
        echo "Selle e-mailiga on kasutaja juba registreeritud.";
    }
    else
    {
        paroolide_kattuvus();
    }
}
}

function paroolide_kattuvus() 
{
$parool =  $_POST['parool'];
$parool_uuesti =  $_POST['parooluuesti'];

    if($parool==$parool_uuesti)
    {
        NewUser();
        }
    else{
    echo "Paroolid ei kattu.";
    {}  
}
}

function NewUser()
{
global $sql;
if (mysql_query( $sql))
{
echo "Kasutaja loodud";
}
}
    emaili_pikkus();


?>
以及包含以下内容的文件init.funcs.php:

<?php
session_start ();

$db = mysql_connect ( 'localhost', 'root', 'aaaa' );

$email = mysql_real_escape_string($_POST['email']);
$eesnimi = mysql_real_escape_string($_POST['eesnimi']);
$perekonnanimi = mysql_real_escape_string($_POST['perekonnanimi']);
$parool =  $_POST['parool'];
$parool_uuesti =  $_POST['parooluuesti'];
$salt = rand(10000,99999);
$hashed_pwd = sha1('$parool'.$salt);
$sql="INSERT INTO kasutajad (e_mail, eesnimi, perenimi, parool, salt ) VALUES ('$email','$eesnimi', '$perekonnanimi', '$parool', '$salt')";

if (! $db) {
    header ( "location: /" );
    die ();
} else {
    mysql_select_db ( 'ta2014' );
}



include_once 'functions/user.funcs.php';

?>
我的HTML如下所示:

<!DOCTYPE html>
<meta charset="UTF-8">
<html>
<head>
<title>Registreerimine</title>
</head>
<body>
<strong>Registreerimiseks täida järgnevad väljad: </strong><br>
<br>
<form method="POST" action="registreerimine4.php">
<table>
<tr><td>Sinu Tieto e-maili aadress: </td><td><input type="text" name="email"></td></tr>
<tr><td>Eesnimi: </td><td><input type="text" name="eesnimi"></td></tr>
<tr><td>Perekonnanimi: </td><td><input type="text" name="perekonnanimi"></td></tr>
<tr><td>Parool: </td><td><input type="text" name="parool"></td></tr>
<tr><td>Parool uuesti: </td><td><input type="text" name="parooluuesti"></td></tr>
</table>
<br>
<input type="submit" value="Registreeri" name="Registreeri">
</form>
</body>
</html>
现在,当我运行我的HTML和PHP时,除了一个函数外,其他一切都正常工作。varasem_olemasolu不起作用。此功能用于检查此电子邮件地址是否已注册帐户。当我使用以下代码时,一切都正常工作,但它太长太复杂,无法真正使用:

<meta charset="UTF-8">

<?php

function emaili_pikkus(){
$con = mysql_connect("localhost","root","aaaa");
$email = mysql_real_escape_string($_POST['email']);
if (strlen($email)>45){
    echo 'e-mail ei tohi olla pikem kui 45 tähemärki';
}
else{
    parooli_pikkus();
    }
}

function parooli_pikkus()
{
$parool =  $_POST['parool'];
$pikkus = strlen($parool);
if ($pikkus<6){
    echo "Parool peab olema vähemalt 6 tähemärki pikk";
    }
else {
    varasem_olemasolu();
}

}

function varasem_olemasolu()
{
$con = mysql_connect("localhost","root","aaaa");
mysql_select_db("ta2014", $con);
$email = mysql_real_escape_string($_POST['email']);
if(!empty($_POST['email']))
{
    $query = mysql_query("SELECT * FROM kasutajad ") or die(mysql_error());
    $array = mysql_fetch_array($query);
    if(in_array($email, $array)) 
    {
        echo "Selle e-mailiga on kasutaja juba registreeritud.";
    }
    else
    {
        paroolide_kattuvus();
    }
}
}

function paroolide_kattuvus() 
{
$parool =  $_POST['parool'];
$parool_uuesti =  $_POST['parooluuesti'];

    if($parool==$parool_uuesti)
    {
        NewUser();
        }
    else{
    echo "Paroolid ei kattu.";
    {}  
}
}

function NewUser()
{
$con = mysql_connect("localhost","root","aaaa");
if (!$con)

  {

  die('Could not connect: ' . mysql_error());

  }

mysql_select_db("ta2014", $con);
$email = mysql_real_escape_string($_POST['email']);
$eesnimi = mysql_real_escape_string($_POST['eesnimi']);
$perekonnanimi = mysql_real_escape_string($_POST['perekonnanimi']);
$parool =  $_POST['parool'];
$parool_uuesti =  $_POST['parooluuesti'];
$salt = rand(1000000,99999999);
$hashed_pwd = sha1('$parool'.$salt);
$sql="INSERT INTO kasutajad (e_mail, eesnimi, perenimi, parool, salt ) VALUES ('$email','$eesnimi', '$perekonnanimi', '$parool', '$salt')";

 if (!mysql_query($sql,$con))

  {

  die('Error: ' . mysql_error());

  }

echo "Kasutaja loodud";
}

    emaili_pikkus();


?>

这是一个很长的问题,如果有人回答我,我将非常感激

您不需要获取完整的表记录来搜索其中的电子邮件。只需按如下所示更改您的查询&检查它返回的行是否大于0

SELECT * FROM `kasutajad` WHERE `e_mail` = $email
警告:。它们不再得到维护。看到了吗?相反,学习,并使用,或-将帮助您决定哪一个。如果您选择PDO

PDO示例:


专栏很可能是电子邮件。我认为应该检查数据库是否也连接了。这只是一个例子。我希望OP的理解,它可以根据需要修改。谢谢,你的评论引导我回答,虽然我没有直接使用它。它也给出了一些错误。OP声明可能从电子邮件和电子邮件中提供了错误,但是正如你所说的@Rikesh,这只是一个例子,你的答案没有错;它起作用了。威尔+1,因为。。。它起作用了--我的猜测是,OP没有看到差异,和/或仍在使用mysql_*DB连接。@user244902如果要检查电子邮件行是否存在,并使用当前代码,则需要使用该函数。例如:ifmysql_num_rows$result>0{…}-$result变量将来自您的查询$query=SELECT*from$结果=mysql\u query$query-如果你在谷歌上查一下电子邮件是否存在mysql php,你很可能会发现类似的东西。如果将PDO或mysqli_*与准备好的语句一起使用,您当前的代码至少可以减少60%。
$email = $_POST['email'];
$con = new PDO( 'mysql:host=localhost;dbname=DB_NAME;charset=UTF-8', 'DB_USER_NAME', 'DB_USER_PASS' );    
$query = $con->prepare( "SELECT `e_mail` FROM `kasutajad` WHERE `e_mail` = ?" );
$query->bindValue( 1, $email);
$query->execute();    
if( $query->rowCount() > 0 ) { # If rows are found for query
     echo "Email Already exits!";
}
else {
     echo "Email not found!";
}