Уже установлено, что вы ничего не извлекли из своего запроса.
В качестве примера я представляю следующее (чтобы помочь вам, потому что это слишком длинный комментарий) с тем, что я использовал для проверки вашего кода.
Убедитесь, что все значения содержатся в вашей базе данных. Вам нужно будет соответствующим образом скопировать имена таблиц и столбцов.
Если приведенный ниже пример не подходит, вам нужно будет выяснить, почему.
Проверьте наличие ошибок и убедитесь, что почта доступна для вас. Проверьте свой спам.
См. Комментарии встроенный внутри кода.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$DB_HOST = 'xxx';
$DB_USER = 'xxx';
$DB_PASS = 'xxx';
$DB_NAME = 'xxx';
$Link = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($Link->connect_errno > 0) {
die('Connection failed [' . $Link->connect_error . ']');
}
$_POST['user'] = "john"; // this is a hard-code value. I did not use a form for it
$user = $_POST['user']; // If taken from a form
// make sure you have a post method
// and that the input has the same
// name attribute for it. I.e.: name="user"
$my_query="SELECT * from users where username = '$user'";
$result= mysqli_query($Link, $my_query) or die(mysqli_error($Link));
while($myrow = mysqli_fetch_array($result)){
echo $to = $myrow["email"];
$password = $myrow["password"];
}
$subject = 'Password';
$sender = '[email protected]'; // replace this with your email address
$message = <<< EMAIL
The Password registered with account {$user} is {$password}.
EMAIL;
$header = "From:" . $sender;
if ($result):
mail($to, $subject, $message, $header);
echo $feedback = 'Email Sent';
endif;
Plus, метод, который вы используете небезопасный, так как при отправке паролей в электронной почте и не использует подготовленное заявление, и хранить пароли в виде обычного текста.
Использовать prepared statements, или PDO with prepared statements, они намного безопаснее.
Пароли
Я также заметил, что вы можете хранить пароли в виде обычного текста. Это не рекомендуется.
Используйте один из следующих действий:
Важно Sidenote о длине колонки:
Если и когда вы решите использовать password_hash()
или пакет обеспечения совместимости (если PHP < 5,5) https://github.com/ircmaxell/password_compat/ , важно отметить, что если длина текущего столбца пароля меньше 60, его нужно будет изменить на это (или выше). В руководстве предлагается длина 255.
Вам потребуется ALTER length вашей колонки и начать с нового хэша, чтобы он вступил в силу. В противном случае MySQL будет терпеть неудачу.
Другие интересные ссылки:
«кажется, не работает это» не является описанием проблемы – PeeHaa
вы ничего не заманишь, вы используете '$ myrow', но ничего не делать с ним. Кроме того, этот массив POST неизвестен, и если он имеет значение или нет. проверить наличие ошибок; вы этого не делаете. –
Хорошо, вам ответили ниже, так как вы не отвечаете на комментарии (или должны были где-то взлететь), может быть, вы ответите на этот вопрос. Кстати, как @PeeHaa сказал: * «Кажется, не работает» - это не описание проблемы *. –