PHP не сравнивается с arraypart - PullRequest
0 голосов
/ 06 апреля 2020

Я создаю простой скрипт, который ищет в текстовом файле правильную комбинацию, но он просто не работает. Я устранял неполадки во всем, но все части просто работали, но все же весь сценарий не работает, и я не знаю, как это исправить.

код:

<html>

<form>
<input type="text" name="input" placeholder="hash"><button type="submit">Crack!</button>
</form>
<?php
$input = $_GET["input"]; // pulling input from url

$hashes = file_get_contents("hashes.txt"); // loading hashes

$hasharray = explode(";", $hashes); // separating hashcombos

$arraynum = count($hasharray); // counting number of hashcombos

// defining loop
$loopnum = 0;
while($loopnum < $arraynum) {
    $combo = $hasharray[$loopnum]; // selecting hashcombo
    $comboarray = explode("|", $combo); // separating hashcombo
    $text = $comboarray[0];
    $hash = $comboarray[1];

    // cecking if hash matches
    if($hash === $input) {
        echo("Hash: $hash");
        echo("<br>");
        echo("Text: $text");
    }

    $loopnum = $loopnum + 1; // updating loop

}
?>
</html>

пример хэшей. текст:

test|example;
example|test;

1 Ответ

0 голосов
/ 07 апреля 2020

Ваш файл содержит символы новой строки, которые также являются невидимыми символами. Например:

test|example;(newline here)
example|test;

Вы разделяете строки в своем файле, используя ;, но это не удаляет символы новой строки. Принимая во внимание комментарии в вашем вопросе, в ваших результатах появляются новые строки, которые приводят к сбою сравнений. Тем не менее, я предлагаю следующее решение сразу после загрузки хешей для удаления символов новой строки:

$hashes = preg_replace("/[\r\n]/", "", $hashes);

, что приведет к такой строке:

test|example;example|test;

Остальная часть вашего кода будет работать как положено.

...