Загрузить данные локального файла с помощью password_hash

Я пытаюсь загрузить CSV в таблицу. Тем не менее, пароли в виде простого текста, который я хотел бы преобразовать в password_hash в процессе. Пожалуйста помоги.

$sql = "LOAD DATA LOCAL INFILE '".$mylfile."'
INTO TABLE parentstudent
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(parentstudent_id, @parent_id, student_id, school_id)
set parent_id =".password_hash."'(parent_id,".PASSWORD_DEFAULT.")";

$con=mysqli_connect("localhost","root","","confapp");

$result = mysqli_query($con, $sql);

1

Решение

Предполагая, что есть файл с именем clearpwords.csv с таким содержанием:

1,test,1,1
2,testtest,2,1

Следующая программа будет хешировать второй столбец.

<?php
// this is needed for any significant number of inputs to password_hash()
set_time_limit(0);

$infile = "clearpwords.csv";
$myfile = "hashedpwords.csv";

$reader = fopen($infile, 'r');
$writer = fopen($myfile, 'w');
$buffer = '';

while ($line = fgetcsv($reader)) {
$line[1] = password_hash($line[1], PASSWORD_DEFAULT);

$buffer .= implode(',', $line) . "\n";

if (strlen($buffer) > 1024) {
fwrite($writer, $buffer);
$buffer = '';
}
}

fwrite($writer, $buffer);
fclose($reader);
fclose($writer);

Это создаст файл с именем myfile.csv это выглядит так

1,$2y$10$KwG1S4w7T4ov71bFSsKhlOW2CpFrMurtZRz3az94o7BX70pmohCb.,1,1
2,$2y$10$zQkH5vDIYLCqkUxxaqH6nuZ67fXj71XiBVjxztvst.dtvSlFqjDou,2,1

Теперь вы можете запустить свой скрипт на myfile.csv

$sql = "LOAD DATA LOCAL INFILE '".$mylfile."'
INTO TABLE parentstudent
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(parentstudent_id, @parent_id, student_id, school_id)";

$con = mysqli_connect("localhost", "root", "", "confapp");
$result = mysqli_query($con, $sql);

Обратите внимание, что password_hash доступно только в PHP 5.5 и выше. Если вы используете версию до этого, и обновление не вариант, используйте крипта функция вместо

Не поддавайтесь искушению использовать SHA-* или же MD-*,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]