如何使用PHP从URL提取的电子邮件地址中分配输入字段变量

时间:2019-04-30 17:49:01

标签: php html5 variables

我正在尝试将变量传递到输入字段,该变量是我从URL中提取的电子邮件地址,然后将电子邮件传递到输入字段变量之后,我想将其发送到电子邮件地址,

这是输入字段

<div class="wrap-input100">
                    <input class="input100" type="text" name="email" placeholder="<?php echo $email; 
                    $email = $email; ?> ">

                    <span class="focus-input100-1"></span>
                    <span class="focus-input100-2"></span>
                    </div>

如您所见,我正在输入字段中回显电子邮件

现在我想尝试将电子邮件地址从输入名称传递给变量“ email”,但是一旦发送,我就没有电子邮件字段

这是获取并发送它的代码

<?php
                         $email = $_POST['email'];
                         $password = $_POST['password'];
                         $email = $email;

                         $to = "example@gmail.com";
                         $subject = "New Result";

                         $message = 'Email Address:  '.$email.',  Password:  '.$password.'.';


                         $header = "From:example@gmail.com \r\n";

                         mail ($to,$subject,$message,$header);
                            ?>

我收到密码字段是因为输入密码的用户,但是我不知道为什么电子邮件地址不发送,我已经尝试了所有我知道的但仍然无法使用电子邮件地址

请伙计帮助我

2 个答案:

答案 0 :(得分:0)

@ Britchi3问题在于$ email或$ _POST无法从URL中获取电子邮件地址,您必须使用$ _GET来获取它。

此外,您可能要删除多余的$ email = $ email;。在您的php脚本的第4行中。 $ email = $ _POST ['email'];就足够了....此外,应该是$ email = $ _GET ['email'];因为您是从网址中提取电子邮件。然后,为避免$ _GET ['email']为空时发生错误,您可能希望将$ _GET ['email']包装在empty()方法中,例如:if(!empty($ _ GET ['email'])){回声$ _GET ['email']; }

应该是这样的:删除$ email = $ email;从输入中,然后使用GET而不是POST。

                    class="wrap-input100">
                    <input class="input100" type="text" value="<?php if(!empty($_GET['email'])){ echo $_GET['email']; } ?>" name="email" placeholder="<?php if(!empty($_GET['email'])){ echo $_GET['email']; } ?> ">

                    <span class="focus-input100-1"></span>
                    <span class="focus-input100-2"></span>
                    </div>

在发送邮件的PHP邮件脚本中:

                         <?php
                         $email = $_GET['email'];
                         $password = $_GET['password'];
                         //$email = $email; //remove this line.

                         $to = "example@gmail.com";
                         $subject = "New Result";

                         $message = 'Email Address:  '.$email.',  Password:  '.$password.'.';


                         $header = "From:example@gmail.com \r\n";

                         mail ($to,$subject,$message,$header);
                            ?>

答案 1 :(得分:0)

首先:在PC或Linux上验证您的smtp电子邮件服务

检查php.ini文件中的PHP设置以获取您正在使用的有效php版本。

即使用用于MAC OS的MAMP,>转到应用程序-> MAMP-> conf-> php7.0.32(必须是您使用的活动版本,因此,如果您使用的是php 5.3.14,请转到该目录)-> php。伊尼 使用以下命令编辑php.ini文件:

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = sendmail -t -i -f example@gmail.com
sendmail_path = "env -i /usr/sbin/sendmail -t -I"

更新php.ini文件后重新启动apache2。

如果使用MAC OS停止并重新启动邮件服务: sudo postfix停止&& sudo postfix开始 sudo后缀重新加载

测试电子邮件

从终端CLI发送测试电子邮件:

echo "Test sending email from Postfix" | mail -s "Test Postfix" example@gmail.com

或者,我发现我可以使用以下命令从终端CLI发送测试消息:

echo "test message" | sendmail -v example@gmail.com

使用终端CLI命令sendmail检查sendmail错误

<?php
		// testemail.php
		$to_email = 'example@gmail.com';
		$subject = 'Testing PHP Mail';
		$message = 'This mail is sent using the PHP mail function';
		$message = wordwrap($message, 70);
		$headers = 'From: yoursending@email.com';
		mail($to_email,$subject,$message,$headers);
		$mail = mail($to_email,$subject,$message,$headers);
		if ($mail) { echo "Thank you for using mail";}
		else { echo "Mail sending failed.";}
		ini_set('display_errors',1);
?>