私はこのスクリプトを持っています。これは、Ionicアプリ内でパスワードを忘れた場合に使用されます。まず、入力欄に入力したメールアドレスが既に登録されているかどうかを確認します。そうでない場合は、「no e-mail registered」と表示されます。はいの場合、ユーザーは電子メールを受け取る必要があります。phpmailerでネストされた関数が機能していません
私は、ユーザーが既に登録されているかどうかをチェックする最初の機能を使わずにphpメーラー機能をテストしました。これはスムーズに動作し、ユーザーは電子メールを受け取ります。次に、MySQL DBの電子メールをチェックするための忘れ機能を構築します。だから、私はsend関数をforgot関数の中にネストしましたが、機能しません。私は、単純な文字列で置き換えることによって、ネストされたsend関数なしで、忘れた関数を試しました。これは機能します。ですから、MySQL DBに電子メールアドレスが存在する場合、電子メールを送信するために何かが欠けていると思います。
は、ここでは、コードforget()
機能で
<?php
include 'dbconn.php';
require 'mailer/PHPMailerAutoload.php';
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
$postdata = file_get_contents("php://input");
if (isset($postdata)) {
$request = json_decode($postdata);
forgot($request);
}
function forgot($request)
{
$email = $request->email;
$query = mysql_query("SELECT * FROM users WHERE email = '$request->email'") or die(mysql_error());
if (mysql_num_rows($query) > 0) {
$row = mysql_fetch_array($query) or die(mysql_error());
if ($row["email"] == $request->email) {
function send($parent_request)
{
//$email = $request->email;
$mail = new PHPMailer;
//$mail->SMTPDebug = 3; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = '*****.net'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]*****.com'; // SMTP username
$mail->Password = '*****'; // SMTP password
$mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to
$mail->setFrom('[email protected]****.com', 'Team');
$mail->addAddress($email, 'Joe User');
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Passwort Reset';
$mail->Body = 'Hallo lieber User <br> Hier kannst du dein Passwort für die varfinz.ch App zurückstellen. <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if ($mail->send()) {
echo '{"result":1}';
} else {
echo '{"result":0}';
}
}
} else {
echo '{"result":0}';
}
}
else {
echo '{"result":0}';
}
}
?>
"*これは動作していません*"はエラーメッセージではありません... –
また、php5.5(3年以上前)から廃止予定のmysql_xxx関数を使用してはいけません。セキュリティ上の問題のためにPHP7から削除されました。代わりに 'mysqli_xxx'または' PDO'を使用してください。http://php.net/manual/en/mysqlinfo.api.choosing.php –
エラーメッセージは表示されません。アプリでテストすると、e -mailアドレスはdbに存在します。私が使用しているサーバーは、PHP 5.4です。 PDOに変更する必要がありますか? –