Re: [PHP] Mail sending program (beginner)
Since it was sunday I was not able to thank instently. Thanks for the help. Thanks to all. [snipped...]
Re: [PHP] Mail sending program (beginner)
On 6/10/06, aci india [EMAIL PROTECTED] wrote: NOTE: Sorry for the very long code Please paste long code snippets in a website like pastebin.com. Also, the code is hard to read because of the complete lack of indentation. I suggest you atleast attempt to debug your code before posting it here. Sprinkle echo or var_dump statements throughout your code and try to find out where the problem is. Make liberal use of the documentation at php.net/manual. I have placed some comments inline, and pointed out your infinite loop. the mail.php file: ^^^ ?php /*mail body file*/ function cnd($fname) { $fil = fopen($fname,r); if(!$fil) die(fopen error); while(!feof($fil)) $buffer = fgets($fil); while($buffer != NULL) { if($buffer == \n.) /*a line should not start with .*/ What is this? You are checking if the whole string is equal to \n., which I think will never happen. You probably want $buffer{0} == '.'/ $buffer = str_replace(\n.,\n.., $buffer); As above. if($buffer == \n $buffer 70) /*should be less than 70*/ What is this supposed to be? You are checking if the line is empty, and then checking if it is greater than 70? And you probably mean strlen in the second part of the if. $buffer = '\n'; } fclose($fil); return $buffer; } /*mail sub file*/ function sub($fname) { $fil = fopen($fname,r); if(!$fil) die(fopen err in sub file); while(!feof($fil)) $buff = fgets($fil); while($buff != NULL) { if($buff 15) strlen here too. Strings don't magically give out their length. { ? script language=javascript alert(the subject line should not be less than 15, pls check the sub.txtfile); /script ?php } } fclose($fil); return $buff; } function fetch_names() { $var = mysql_connect(localhost,root,); if(!$var) die(could not connect.mysql_error()); $db = mysql_select_db(sathya_clon,$var); if(!$db) die(could not find the data base.mysql_error()); $result = mysql_query(select name from users,$var) or die(unable to fetch rows); $rows = mysql_fetch_array($result); while($rows) { Here's your infinite loop. Review the docs on how to iterate through returned rows. php.net/mysql_query. for($i=0; $i= $rows ; $i++) for($j=0;$j = i-1 ; $j++) $names[$i] = $rows[$j]; } return $names; } function fetch_emails() { $var = mysql_connect(localhost,root,); if(!$var) die(could not connect.mysql_error()); $db = mysql_select_db(sathya_clon,$var); if(!$db) die(could not find the data base.mysql_error()); $result = mysql_query(select email from users,$var) or die(unable to fetch rows); $rows = mysql_fetch_array($result); while($rows) { One more infinite loop. for($i=0; $i= $rows ; $i++) for($j=0;$j = i-1 ; $j++) $email[$i] = $rows[$j]; } return $email; } $var = mysql_connect(localhost,root,); if(!$var) die(could not connect.mysql_error()); $db = mysql_select_db(sathya_clon,$var); if(!$db) die(could not find the data base.mysql_error()); $name = $_POST['user_name']; $mail = $_POST['user_email']; $db_q = mysql_query(insert into users values('$name','$mail')); This is open to SQL injection attacts. See php.net/mysql_real_escape_string and phpsec.org if(!$db_q) die(mysql error); $condt = cnd(cond.txt); $sub = sub (sub.txt); $name = fetch_names(); $email = fetch_emails(); $mail_stat = mail($email,$sub,$condt,from:[EMAIL PROTECTED]); if($mail_stat == NULL) mail doesn't return NULL. php.net/mail. echo mail sent failed; else echo mail sent sucess. Pls check for mail for further acction; ? ==code ends Rabin -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Mail sending program (beginner)
i don't really understand what your trying to do here but if im correct there is a much easier way... if you are trying to make a newletter sign up this is simple. there is no reason to send the email to the database simply have the enter thier email address, use regex to check it, if it passes that test, send it and a uniqe conformation number to a database, and use mail() to send them the conformation information with the link to the confirm page. they then click on the link to confirm.php or whatever and it will check the database for that email or number... if they are both there and the both match it will erase it from the confirm database and send the info to the newsletter database. i will give you an example... //start index.php or news_signup.php or something of the sort... ?php //first we define the function for the email check... function is_valid ($email) { if (eregi(^[_a-z0-9-]+(\.[_a-z0-9-]+)[EMAIL PROTECTED](\.[a-z0-9-]+)*(\.[a-z]{2,3}) $, $email)) { return true; } } //check to see if the signup form button was pressed and perform tests on the form data.. if ($HTTP_POST_VARS[ADD_USER]) { if (!$HTTP_POST_VARS[email]) { $e = error! you must enter your email address!; } else { if (!is_valid($HTTP_POST_VARS[email]) { $e = error! your email address is invalid!; } else { //all the tests passed at this point, so we make that conf # i talked about... $conf = uniqid(nuser); //now we eneter all the information in to a database called add that has three feilds.. auto_increment id. email. confid. mysql_query(insert into add (id, email, confid) VALUES (null, '$email', '$conf')); //now we send the email $to = $email; $subject = 'Your Newsletter subscription...'; $message = Hello $email, your registration is almost complete! all you have to do now is confirm your registration. to do this simply click on this link: a href=\http://yoursite.com/newsletter/confirm.php?confid=$conf\;Complete Registration Now/a or, copy and paste this into your web browser: www.yoursite.com/newsletter/confirm.php?confid=$conf brbrbPlease Note: your resgistration will expire in exactly 24 hours from when you clicked the register button, so please confirm your registration now!/b; $message = wordwrap($message); $headers = 'From: [EMAIL PROTECTED]' . \r\n; $headers .= 'MIME-Version: 1.0' . \r\n; $headers .= 'Content-type: text/html; charset=iso-8859-1' . \r\n; mail($to, $subject, $message, $headers); $e = congratulations you have signed up! You should recieve an email shortly to confirm.; } } } else { //now we actually display the form ? form method=post action=whateveryoucallit.php email:br input type=text name=email value=?php echo($email); ? length=35br input type=submit name=ADD_USER value=SIGN UP! /form ?php //now we wnd the orginal php block } //now we dipslay the error message if there was any... if ($e) { echo($e); } ? this is the whole first page. simple. not too many languages. now the confirm page. //start confirm.php or whatever. ?php //first we make sure they got to this page by email, making sure the variable $conf is set if (!$conf) { $e = (Sorry, you must have an id in order to complete the registration... please click on or copy and paste the link from your email into your web browser.. thank you - staff); } //now we make sure that the confid is in the database else { $cc1 = mysql_query(SELECT * from add where confid = '$conf') or die(mysql_error()); $ccc1 = mysql_fetch_array($cc1); if (!$ccc1) { $e = (Sorry, The id you have enterd does not match any of our records...you may have already confirmed your email - staff); } //grab the data where the ids match and enter the in to the new database else { $query = mysql_query(select * from conf where confid = '$conf'); while ($d = mysql_fetch_array($query)) { $email = $d[email]; mysql_query(insert into users (id, email) VALUES (NULL, '$email')) or die(mysql_error()); //delete from the conf database mysql_query(delete from conf where conf = '$confid') or die(mysql_error()); $s = (Congratulations b$email/b, you have successfully signedup... you will now get our monthly emails...); } } } } if ($e) { echo(bcenter$e/b/center); } if ($s) { echo(bcenter$s/b/centerbrbcenter$s1/b/centerbrcenter bYou will now be redirected to login.../b/center); } ? this is not perfect, but should give you an idea of what your doing and a different way (possibly better) of doing this. - Original Message - From: aci india [EMAIL PROTECTED] To: php-general@lists.php.net Sent: Friday, June 09, 2006 10:24 PM Subject: [PHP] Mail sending program (beginner) Dear group, Description: Following is the code which I tried for learning propuses. It is a mail sending program which checks weather the user enters a correct mail id If he enters the correct mail ID then user name and e-mail will get stored in the mysql data base table. After getting stored then mail will sent
Re: [PHP] Mail sending program (beginner)
At 10:54 AM +0530 6/10/06, aci india wrote: Dear group, Description: Following is the code which I tried for learning propuses. It is a mail sending program -snip- I read what you wanted, try this: http://www.weberdev.com/get_example-503.html hth's tedd -- http://sperling.com http://ancientstones.com http://earthstones.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Mail sending program (beginner)
Dear group, Description: Following is the code which I tried for learning propuses. It is a mail sending program which checks weather the user enters a correct mail id If he enters the correct mail ID then user name and e-mail will get stored in the mysql data base table. After getting stored then mail will sent to the user as a accknoledg process. For the propus of mail subject and mail body, I have created two external files. The problem: Filling the rows and col in the data base is no problem at all. The value getting stored. But after clicking the button for accknoledg the browser takes lot of time in execution. I doubt with either the file handling functions or infinit loop. Or Am I missing somthing basic? Pls mention if you faced a similear situation with file handling and infinit loop. Thanks. NOTE: Sorry for the very long code == the code= The html file: HTML body form method=post name=my_frm action=mail.php TABLE align =center tr td Name: /td td input id=text name=user_name /td /tr tr td E-mail: /td td input id=text name=user_email /td /tr /TABLE table align = center tr td input type=submit name=click_btn value=yes,I want my 'CMS' NewsLetter NOW! align=middle onClick=validt() /td /tr /table table align=center tr td a href=test.htmlfont size=2Or click here to see how you can learn everything br you need to know about CMS without signing up for our free newsletter /font /a /td /tr /table script language=javascript function validt() { var str= document.my_frm.user_email.value; var name = document.my_frm.user_name.value; if(str.indexOf(@) 0 || str.indexOf(.) 0) { my_error() } else alert(thanks for entering valid e-mail); } function my_error() { alert(pls enter a correct e-mail ID); document.my_frm.user_email.value = ; } /script /form /body /HTML the mail.php file: ^^^ ?php /*mail body file*/ function cnd($fname) { $fil = fopen($fname,r); if(!$fil) die(fopen error); while(!feof($fil)) $buffer = fgets($fil); while($buffer != NULL) { if($buffer == \n.) /*a line should not start with .*/ $buffer = str_replace(\n.,\n.., $buffer); if($buffer == \n $buffer 70) /*should be less than 70*/ $buffer = '\n'; } fclose($fil); return $buffer; } /*mail sub file*/ function sub($fname) { $fil = fopen($fname,r); if(!$fil) die(fopen err in sub file); while(!feof($fil)) $buff = fgets($fil); while($buff != NULL) { if($buff 15) { ? script language=javascript alert(the subject line should not be less than 15, pls check the sub.txtfile); /script ?php } } fclose($fil); return $buff; } function fetch_names() { $var = mysql_connect(localhost,root,); if(!$var) die(could not connect.mysql_error()); $db = mysql_select_db(sathya_clon,$var); if(!$db) die(could not find the data base.mysql_error()); $result = mysql_query(select name from users,$var) or die(unable to fetch rows); $rows = mysql_fetch_array($result); while($rows) { for($i=0; $i= $rows ; $i++) for($j=0;$j = i-1 ; $j++) $names[$i] = $rows[$j]; } return $names; } function fetch_emails() { $var = mysql_connect(localhost,root,); if(!$var) die(could not connect.mysql_error()); $db = mysql_select_db(sathya_clon,$var); if(!$db) die(could not find the data base.mysql_error()); $result = mysql_query(select email from users,$var) or die(unable to fetch rows); $rows = mysql_fetch_array($result); while($rows) { for($i=0; $i= $rows ; $i++) for($j=0;$j = i-1 ; $j++) $email[$i] = $rows[$j]; } return $email; } $var = mysql_connect(localhost,root,); if(!$var) die(could not connect.mysql_error()); $db = mysql_select_db(sathya_clon,$var); if(!$db) die(could not find the data base.mysql_error()); $name = $_POST['user_name']; $mail = $_POST['user_email']; $db_q = mysql_query(insert into users values('$name','$mail')); if(!$db_q) die(mysql error); $condt = cnd(cond.txt); $sub = sub (sub.txt); $name = fetch_names(); $email = fetch_emails(); $mail_stat = mail($email,$sub,$condt,from:[EMAIL PROTECTED]); if($mail_stat == NULL) echo mail sent failed; else echo mail sent sucess. Pls check for mail for further acction; ? ==code ends sorry english is not my native language.