数组在打印时显示,但无法与php中的字符串进行比较

I am trying to write a php script to confirm an email address. I am using a file instead of a database to store user info which is outside the root directory. The file is csv.

When I try to store its contents in an array and print it, it works but when I try to compare an element from the array, it doesn't work. And also I want to write the email address of the user in csv as the last entry on the same line as other info.

Please help.

<?php
    $rows[] = array();
    $username = $_GET["username"];
    $passkey = $_GET["passkey"];
    $userdata = fopen("/****/*********/*****/$username.csv", "r");
    $email = $_GET["email"];
    $line = file_get_contents("/****/********/*****/$username.csv");
    $rows = explode(",", $line);

    print_r ($rows);
    $newrows = trim($rows[6]);
    $newpasskey = trim($passkey);

    if($newrows == $newpasskey)
    {
        echo "Email-Id confirmed.";
        fclose($userdata);
        $userdata = fopen("/****/********/******/$username.csv", "a+");
        fwrite($userdata, ",".$email);
        fclose($userdata);
    }
?>

I found out the reason.I had made a mistake while entering the user info onto the file. I changed the php script that enters user info to the file. Now it works perfectly.

Try this:

$passkey = trim($passkey);
$stored_pass = trim($rows[6]);
if($stored_pass == $passkey)
{
  //do stuff here
}

I suggest you take a look at PHPs csv functions to ease loading/writing .csv data.

http://php.net/manual/en/function.fgetcsv.php and http://php.net/manual/en/function.fputcsv.php

Also, in your code, make sure that $username and $passkey are set, trimmed and sanitized before continuing.

You might also want to switch from GET to POST method in your form, I personally wouldn't want my password to be seen in the URL.