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

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -