проверка значения в массиве и возвращение остальных элементов - PullRequest
0 голосов
/ 18 октября 2018

ниже массив, который у меня есть

  [{
    "Email": "alsongdunstan2@gmail.com",
    "SecretKey": "e868f7b4c5b3a7d23cc746d24fdb65aad7a0d762",
    "SecretIv": "dd760185b148d4a59e0adf583b21b15b8d6d7e16"
}, {
    "Email": "sule@gmail.com",
    "SecretKey": "d36c88178041cc1942b068bbd6dd0f2a88681dfb",
    "SecretIv": "33ead1d0267e99eff90aac18a1c848fbcb1253b2"
}, {
    "Email": "alsongdunstan@gmail.com",
    "SecretKey": "45bf3e3dd6efb9022606c1ed095b033daf0a1d3d",
    "SecretIv": "74528bdb8418522d1ff1a37e4ca9db1e0dc160da"
}]

Я хочу иметь возможность искать, если sule@gmail.com находится в массиве выше.и затем вернуть секретный ключ и секретные значения.

приведенный ниже код - это то, что я пытаюсь сделать

    <?php
include_once '../Includes/Secure.php';
include_once '../Includes/ConnectionInfo.php';

/*Acquiring the security class*/
$mSecure = new Includes\Secure;
$mConnectionInfo = new Includes\ConnectionInfo();
$mConnectionInfo->GetConnection();

$email ="sule@gmail.com";

if ($mConnectionInfo->conn){
    echo "is connected <br/>";

    $stmt2 = $mConnectionInfo->conn->prepare('SELECT email, secret_key, secret_iv FROM users');

    $work2 = $stmt2->execute();
    $returnedvalue = array();
    if ($work2){
        while($row = $stmt2->fetch(PDO::FETCH_ASSOC)){

            $secret_key = $row['secret_key'];
            $secret_iv = $row['secret_iv'];

            $secret_key = $mSecure->my_simple_crypt_key($row['secret_key'],'d','sha384');//encrypt with sha384

            $secret_iv = $mSecure->my_simple_crypt_key($row['secret_iv'],'d','sha384');//encrypt with sha384


            $decryptedemail = $mSecure->my_simple_crypt($row['email'],'d','sha384',$secret_key,$secret_iv);//encrypt with sha384

            $value = ["Email" => $decryptedemail, "SecretKey" => $secret_key, "SecretIv" => $secret_iv];
            array_push($returnedvalue, $value);
        }

        echo json_encode($returnedvalue);
        echo "<br/>";
        echo $email;

        if(in_array($email,$returnedvalue,TRUE)){
            echo "<br/> value exists";
        }
        else{
            echo "<br/> value doesnt exists<br/>";
        }
    }
}
?>

нужна некоторая помощь о том, как проверить, существует ли значение и как получить другоеэлементы, связанные со значением.

или, если есть другой способ сделать это, спасибо

1 Ответ

0 голосов
/ 18 октября 2018

Вы должны использовать цикл foreach непосредственно на выходе выполнения PDO, например,

if ($mConnectionInfo->conn){

echo "is connected <br/>";

$stmt2 = $mConnectionInfo->conn->prepare('SELECT email, secret_key, secret_iv FROM users');
$stmt2 = execute();

foreach($stmt2 as $row){

    if($email == $mSecure->my_simple_crypt($row['email'],'d','sha384',$secret_key,$secret_iv);){

        $secret_key = $row['secret_key'];
        $secret_iv = $row['secret_iv'];
        $secret_iv = $mSecure->my_simple_crypt_key($row['secret_iv'],'d','sha384');//encrypt with sha384
        $decryptedemail = $mSecure->my_simple_crypt($row['email'],'d','sha384',$secret_key,$secret_iv);//encrypt with sha384
        $value = ["Email" => $decryptedemail, "SecretKey" => $secret_key, "SecretIv" => $secret_iv];

        array_push($returnedvalue, $secret_key);
        array_push($returnedvalue, $secret_iv);
        array_push($returnedvalue, $secret_iv);
        array_push($returnedvalue, $decryptedemail);
        array_push($returnedvalue, $value);
    }
}

    echo json_encode($returnedvalue);
    echo "<br/>";
    echo $email;

    if(in_array($email,$returnedvalue,TRUE)){
        echo "<br/> value exists";
    }
    else{
        echo "<br/> value doesnt exists<br/>";
    }
}

}?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...