PHP fgetcsv未将第一行放入数组 #设置页面标题和显示标题部分。 $page_title='寄存器'; include('includes/header.html'); #检查提交的表格。 如果($\u服务器['REQUEST\u METHOD']='POST') { $csv=array(); $myfile=fopen(“database.csv”,“r”)或die(“无法打开文件!”); 而(!feof($myfile)) { $csv[]=fgetcsv($myfile); } fclose($myfile); #初始化错误数组。 $errors=array(); #检查电子邮件地址: 如果(空($_POST['email'])) { $errors[]=“输入您的电子邮件地址”; } #检查密码和匹配的输入密码。 如果(!空($_POST['pass1'])) { 如果($邮政['pass1']!=$邮政['pass2']) { $errors[]=“密码不匹配”; } } 其他的 { $errors[]=“输入密码”; } #检查电子邮件地址是否已注册。 if(空($errors)) { $email=$_POST['email']; foreach($csv作为$value) { 如果($value[0]=$email) { $errors[]='电子邮件地址已注册。 '; } } } #成功注册后,用户将插入“用户”数据库表。 if(空($errors)) { $myfile=fopen(“database.csv”、“a”)或 死亡(“无法打开文件!”); $email=$_POST['email']; $password=$_POST['pass1']; $salt=“面包”; $hashed_password=crypt($password,$salt); $guesses=0; $last_login=date('YmdHis'); $values=array($email、$hash\u password、$guesss、$last\u login); fputcsv($myfile,$value); echo'已注册!

PHP fgetcsv未将第一行放入数组 #设置页面标题和显示标题部分。 $page_title='寄存器'; include('includes/header.html'); #检查提交的表格。 如果($\u服务器['REQUEST\u METHOD']='POST') { $csv=array(); $myfile=fopen(“database.csv”,“r”)或die(“无法打开文件!”); 而(!feof($myfile)) { $csv[]=fgetcsv($myfile); } fclose($myfile); #初始化错误数组。 $errors=array(); #检查电子邮件地址: 如果(空($_POST['email'])) { $errors[]=“输入您的电子邮件地址”; } #检查密码和匹配的输入密码。 如果(!空($_POST['pass1'])) { 如果($邮政['pass1']!=$邮政['pass2']) { $errors[]=“密码不匹配”; } } 其他的 { $errors[]=“输入密码”; } #检查电子邮件地址是否已注册。 if(空($errors)) { $email=$_POST['email']; foreach($csv作为$value) { 如果($value[0]=$email) { $errors[]='电子邮件地址已注册。 '; } } } #成功注册后,用户将插入“用户”数据库表。 if(空($errors)) { $myfile=fopen(“database.csv”、“a”)或 死亡(“无法打开文件!”); $email=$_POST['email']; $password=$_POST['pass1']; $salt=“面包”; $hashed_password=crypt($password,$salt); $guesses=0; $last_login=date('YmdHis'); $values=array($email、$hash\u password、$guesss、$last\u login); fputcsv($myfile,$value); echo'已注册!,php,Php,您现在已注册。 '; #显示页脚部分并退出脚本: include('includes/footer.html'); fclose($myfile); 退出(); } #或报告错误。 其他的 { echo'错误!以下错误 发生: ",; foreach($msg错误){echo“-$msg”;} echo“请再试一次。”; } } 如果电子邮件位于数据库的第一行中,则不起作用,但在后续行中则为ok 我添加了who代码,以防出现某种逻辑错误,但不确定可能是什么 如果有人能发现任何东西,请告诉我

您现在已注册。

'; #显示页脚部分并退出脚本: include('includes/footer.html'); fclose($myfile); 退出(); } #或报告错误。 其他的 { echo'错误!

以下错误 发生:
",; foreach($msg错误){echo“-$msg
”;} echo“请再试一次。

”; } } 如果电子邮件位于数据库的第一行中,则不起作用,但在后续行中则为ok

我添加了who代码,以防出现某种逻辑错误,但不确定可能是什么

如果有人能发现任何东西,请告诉我

现在,我添加了这个额外的代码,它不会让我更新它,这说明post主要是代码,必须添加更多细节


不确定是否与fgetcvs和fputcvs函数有关?

先生,我测试过,它工作正常,没有问题。你可以用这种方式展示

# Set page title and display header section.
$page_title = 'Register' ;
include ( 'includes/header.html' ) ;

# Check form submitted.
if ($_SERVER['REQUEST_METHOD']=='POST')
{ 
  $csv = array();
  $myfile = fopen("database.csv", "r") or die("Unable to open file!");

    while (!feof($myfile))
    {
        $csv[] = fgetcsv($myfile);
    }
    fclose($myfile);

    # Initialize an error array.
    $errors = array();

    # Check for an email address:
    if(empty($_POST['email']))
    {
        $errors[] = 'Enter your email address.';
    }

    # Check for a password and matching input passwords.
    if (!empty($_POST['pass1']))
    {
        if ($_POST['pass1']!=$_POST['pass2'])
        {
            $errors[]='Passwords do not match.';
        }
    }
    else
    {
        $errors[]='Enter your password.';
    }

    # Check if email address already registered.
    if(empty($errors))
    {
        $email = $_POST['email'];
        foreach($csv as $value)
        {
            if($value[0] == $email)
            {
                $errors[] = 'Email address already registered.
                <a href="login.php">Login</a>';
            }
        }
    }

    # On success register user inserting into 'users' database table.
    if ( empty( $errors ) ) 
    {
        $myfile = fopen("database.csv", "a") or
        die("Unable to open file!");
        $email = $_POST['email'];
        $password = $_POST['pass1'];
        $salt = "bread";
        $hashed_password = crypt($password,$salt);
        $guesses=0;
        $last_login = date('YmdHis');        
        $values = array($email,$hashed_password,$guesses,$last_login);
        fputcsv($myfile, $values);
        echo '<h1>Registered!</h1><p>You are now registered.</p><p>
        <a href="login.php">Login</a></p>';

    # Display footer section and quit script:
    include ('includes/footer.html');
    fclose($myfile);
    exit();
    }
    # Or report errors.
    else 
    {
        echo '<h1>Error!</h1><p id="err_msg">The following error(s)
        occurred:
        <br>' ;
        foreach ( $errors as $msg ){ echo " - $msg<br>" ; }
        echo 'Please try again.</p>';
    }  
}
foreach($csv作为$value)
{
echo$value[0];
如果($value[0]=$email)
{
$errors[]=“电子邮件地址已注册。”;
}
}   

与您的问题无关,但您确实应该为此使用数据库。能否添加数据库.csv的示例?文件中每行的格式:电子邮件,密码规范的一部分是使用平面文件而不是数据库我相信问题出在database.csv文件中,无法再现csv的代码和给定格式的问题。当为空时:数组(大小=1)0=>array(大小=1)0=>string“”(长度=3)在第一个条目之后:数组(大小=2)0=>array(大小=4)0=>string'test@domain.com'(长度=18)1=>字符串'bruv7wxzBISVw'(长度=13)1=>boolean False它不匹配test@domain.com,如果我尝试注册,它将在第二行再次注册,但从第二行开始工作确定,正确匹配
foreach($csv as $value)
{
    echo $value[0];
    if($value[0] == $email)
    {

        $errors[] = 'Email address already registered. <a 
        href="login.php">Login</a>';
    }
}