html - Undefined variable: use_smtp error in php mail script -
i have form on webpage calls php script send email though isn't working properly, nginx error log gives following when submit form;
2014/04/07 15:55:42 [error] 10829#0: *1 fastcgi sent in stderr: "php message: php notice: undefined variable: use_smtp in /home/deployer/example/releases/20140407153701/form-handler.php on line 62" while reading response header upstream, client: 86.131.120.178, server: example.net, request: "post /form-handler.php http/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "example.net", referrer: "http://example.net/"
line 62
if($use_smtp == '1'){
from form-handler.php
$use_smtp = '0'; $emailto = 'me@example.net'; // retrieve parameters $emailfrom = isset($_post["email"]) ? $_post["email"] : ""; $nocomment = isset($_post["nocomment"]) ? $_post["nocomment"] : ""; $subject = 'apophenic enquiry'; $message = ''; $response = ''; $response_fail = 'there error verifying details.'; // honeypot captcha if($nocomment == '') { $params = $_post; foreach ( $params $key=>$value ){ if(!($key == 'ip' || $key == 'emailsubject' || $key == 'url' || $key == 'emailto' || $key == 'nocomment' || $key == 'v_error' || $key == 'v_email')){ $key = ucwords(str_replace("-", " ", $key)); if ( gettype( $value ) == "array" ){ $message .= "$key: \n"; foreach ( $value $two_dim_value ) $message .= "...$two_dim_value<br>"; }else { $message .= $value != '' ? "$key: $value\n" : ''; } } } $response = sendemail($subject, $message, $emailto, $emailfrom); } else { $response = $response_fail; } echo $response; // run server-side validation function sendemail($subject, $content, $emailto, $emailfrom) { $from = $emailfrom; $response_sent = 'thank you. messsage has been received.'; $response_error = 'error. please try again.'; $subject = filter($subject); $url = "origin page: ".$_server['http_referer']; $ip = "ip address: ".$_server["remote_addr"]; $message = $content."\n$ip\r\n$url"; // validate return email & inform admin $emailto = filter($emailto); // setup final message $body = wordwrap($message); if($use_smtp == '1'){ $smtpserver = 'smtp server'; $smtpport = 'smtp port'; $smtpuser = 'smtp user'; $smtppass = 'smtp password'; $to = $emailto; $smtpmail = new smtpclient ($smtpserver, $smtpport, $smtpuser, $smtppass, $from, $to, $subject, $body); $smtpchat = $smtpmail->sendmail(); $response = $smtpchat ? $response_sent : $response_error; } else { // create header $headers = "from: $from\r\n"; $headers .= "mime-version: 1.0\r\n"; $headers .= "content-type: text/plain; charset=utf-8\r\n"; $headers .= "content-transfer-encoding: quoted-printable\r\n"; // send email $mail_sent = @mail($emailto, $subject, $body, $headers); $response = $mail_sent ? $response_sent : $response_error; } return $response; } // remove un-safe values prevent email injection function filter($value) { $pattern = array("/\n/", "/\r/", "/content-type:/i", "/to:/i", "/from:/i", "/cc:/i"); $value = preg_replace($pattern, "", $value); return $value; } exit; ?>
i don't know php i've no idea what's wrong!
hello,
problem line:
if($use_smtp == '1'){
try make $globals['user_smtp'] instead of $user_smtp or pass value function.
if not pass variable function php not know because not inside.
i try explain better.
you have in first line of code
$use_smtp = '0'
with create variable name use_smtp , gives string "0". (it's in main program).
then have function "sendemail". there try use variable called "use_smtp" function not exist because "main" program know not function. have neither write
$use_smtp = '0'
in function or pass variable like:
sendemail($subject, $content, $emailto, $emailfrom, $use_smtp)
or change line of code
if($use_smtp == '1'){
to
if($globals['use_smtp'] == '1'){
Comments
Post a Comment