如何使用 href html 标签中的参数调用 php 函数
how to call php function with parameters in href html tag
我想用 href 标签中的参数调用 sendEmail($email) 函数 当我点击 link 我得到一个写在里面的页面 FORBIDDEN "you don't have permission to access the root folder on this server"
<?php
require 'PHPMailer-master/PHPMailerAutoload.php';
function sendEmail($email) {
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'zebalaGP@gmail.com'; // SMTP username
$mail->Password = '******'; // SMTP password
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = 'zebalaGP@gmail.com';
$mail->FromName = 'ana grin emoticon';
$mail->addAddress($email); // Add a recipient
$mail->isHTML(true);
$mail->Subject = 'blabla !';
$mail->Body = 'Salam,, <br> <b> thanks for your participation grin emoticon you are especial for us grin emoticon ';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if (!$mail->send()) {
echo 'no';
return false;
} else {
echo 'sent grin emoticon';
return true;
}
}
$email='ayaradwan_93@yahoo.com';
//sendEmail($email);
$r=' <a href= ".<?php sendEmail($email); ?>." > Send Email </a> ';
echo $r;
?>
您正在混合使用服务器端代码和客户端代码。他们运行 在完全不同的时间在完全不同的环境(通常)完全不同的计算机.
不清楚您的代码究竟要做什么,但很可能您在请求页面时立即执行sendEmail()
函数。然后因为你没有回应任何结果,a
标签看起来像这样:
<a href="">Send Email</a>
两件事:
- 邮件已发送。
- 空
href
将尝试加载当前页面或某些默认目录列表或其他内容。它绝对不会调用服务器端代码。
您尝试做的事情比您想象的要复杂一些。鉴于您目前所拥有的,最简单的方法是将所有电子邮件功能移动到另一个页面。像 sendMail.php
这样的东西。然后你在这里的页面将简单地 link 到另一个页面:
<a href="sendMail.php">Send Email</a>
当用户单击 link 时,他们会调用第二个页面,该页面本身会在内部调用 sendEmail()
,然后向用户显示结果。类似于:
<?php
// define sendEmail here like you already do
sendEmail();
?>
<p>The email has been sent. Thank you!</p>
所以发送电子邮件的请求来自一个页面,实际发送它的动作在另一个页面上。
您可以通过多种方式使这个功能越来越丰富:
- 而不是 link,使用将值发布到
sendEmail.php
的表单,以便在撰写电子邮件时可以使用这些值。
- 而不是 link 进入页面,有一个带有一些 JavaScript 代码的按钮,它创建一个 AJAX 请求到
sendEmail.php
发送邮件而不离开当前页面。
- 等等
但基本思想是您的服务器端代码和客户端代码不能直接交互。它们由 HTTP 请求分隔。如果客户端代码想要调用某些服务器端功能,它需要向执行该操作的服务器端资源(在本例中为 "page")发出 HTTP 请求。
您可以做的是 <a>
link 到带有一些 GET
参数的 php 页面。然后,在您的 php 页面中,如果设置了 GET 参数,您可以使用它们发送电子邮件。
可以是这样的,如果你希望它是同一页。
<?php
require 'PHPMailer-master/PHPMailerAutoload.php';
function sendEmail($email) {
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'zebalaGP@gmail.com'; // SMTP username
$mail->Password = '******'; // SMTP password
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = 'zebalaGP@gmail.com';
$mail->FromName = 'ana grin emoticon';
$mail->addAddress($email); // Add a recipient
$mail->isHTML(true);
$mail->Subject = 'blabla !';
$mail->Body = 'Salam,, <br> <b> thanks for your participation grin emoticon you are especial for us grin emoticon ';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if (!$mail->send()) {
echo 'no';
return false;
} else {
echo 'sent grin emoticon';
return true;
}
}
$email='ayaradwan_93@yahoo.com';
$r=' <a href= "your_page_file_name.php?mail='.$email.'" > Send Email </a> ';
//sendEmail($email);
if(isset($_GET['mail'])){
sendEmail($_GET['mail']);
}else{
echo $r;
}
?>
这可能是您实现所需内容的最简单方法,不过,我强烈建议最好的方法是提交表单或通过 AJAX。
我想用 href 标签中的参数调用 sendEmail($email) 函数 当我点击 link 我得到一个写在里面的页面 FORBIDDEN "you don't have permission to access the root folder on this server"
<?php
require 'PHPMailer-master/PHPMailerAutoload.php';
function sendEmail($email) {
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'zebalaGP@gmail.com'; // SMTP username
$mail->Password = '******'; // SMTP password
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = 'zebalaGP@gmail.com';
$mail->FromName = 'ana grin emoticon';
$mail->addAddress($email); // Add a recipient
$mail->isHTML(true);
$mail->Subject = 'blabla !';
$mail->Body = 'Salam,, <br> <b> thanks for your participation grin emoticon you are especial for us grin emoticon ';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if (!$mail->send()) {
echo 'no';
return false;
} else {
echo 'sent grin emoticon';
return true;
}
}
$email='ayaradwan_93@yahoo.com';
//sendEmail($email);
$r=' <a href= ".<?php sendEmail($email); ?>." > Send Email </a> ';
echo $r;
?>
您正在混合使用服务器端代码和客户端代码。他们运行 在完全不同的时间在完全不同的环境(通常)完全不同的计算机.
不清楚您的代码究竟要做什么,但很可能您在请求页面时立即执行sendEmail()
函数。然后因为你没有回应任何结果,a
标签看起来像这样:
<a href="">Send Email</a>
两件事:
- 邮件已发送。
- 空
href
将尝试加载当前页面或某些默认目录列表或其他内容。它绝对不会调用服务器端代码。
您尝试做的事情比您想象的要复杂一些。鉴于您目前所拥有的,最简单的方法是将所有电子邮件功能移动到另一个页面。像 sendMail.php
这样的东西。然后你在这里的页面将简单地 link 到另一个页面:
<a href="sendMail.php">Send Email</a>
当用户单击 link 时,他们会调用第二个页面,该页面本身会在内部调用 sendEmail()
,然后向用户显示结果。类似于:
<?php
// define sendEmail here like you already do
sendEmail();
?>
<p>The email has been sent. Thank you!</p>
所以发送电子邮件的请求来自一个页面,实际发送它的动作在另一个页面上。
您可以通过多种方式使这个功能越来越丰富:
- 而不是 link,使用将值发布到
sendEmail.php
的表单,以便在撰写电子邮件时可以使用这些值。 - 而不是 link 进入页面,有一个带有一些 JavaScript 代码的按钮,它创建一个 AJAX 请求到
sendEmail.php
发送邮件而不离开当前页面。 - 等等
但基本思想是您的服务器端代码和客户端代码不能直接交互。它们由 HTTP 请求分隔。如果客户端代码想要调用某些服务器端功能,它需要向执行该操作的服务器端资源(在本例中为 "page")发出 HTTP 请求。
您可以做的是 <a>
link 到带有一些 GET
参数的 php 页面。然后,在您的 php 页面中,如果设置了 GET 参数,您可以使用它们发送电子邮件。
可以是这样的,如果你希望它是同一页。
<?php
require 'PHPMailer-master/PHPMailerAutoload.php';
function sendEmail($email) {
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'zebalaGP@gmail.com'; // SMTP username
$mail->Password = '******'; // SMTP password
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = 'zebalaGP@gmail.com';
$mail->FromName = 'ana grin emoticon';
$mail->addAddress($email); // Add a recipient
$mail->isHTML(true);
$mail->Subject = 'blabla !';
$mail->Body = 'Salam,, <br> <b> thanks for your participation grin emoticon you are especial for us grin emoticon ';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if (!$mail->send()) {
echo 'no';
return false;
} else {
echo 'sent grin emoticon';
return true;
}
}
$email='ayaradwan_93@yahoo.com';
$r=' <a href= "your_page_file_name.php?mail='.$email.'" > Send Email </a> ';
//sendEmail($email);
if(isset($_GET['mail'])){
sendEmail($_GET['mail']);
}else{
echo $r;
}
?>
这可能是您实现所需内容的最简单方法,不过,我强烈建议最好的方法是提交表单或通过 AJAX。