Results 1 to 3 of 3

Thread: no error mesgs and no email

  1. #1
    Join Date
    Apr 2007
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default no error mesgs and no email

    First I am a complete noob.
    The code runs on the server, I get my successful and error pages on submit, and no error msgs. I get no email either for submittor or to form owner. I did a php info on the server and get that the smtp server is localhost on port 25.
    What should I try next?
    Here is the php misus the variables:
    PHP Code:
    <?php

    //lots of variables here

    // Validation
    if (strlen($name) == )
    {
    header("Location: Fail.html");
    exit;
    }

    if (
    strlen($organization) == )
    {
    header("Location: Fail.html");
    exit;
    }

    if (! 
    ereg('[A-Za-z0-9_-]+\@[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+'$email))
    {
    header("Location: Fail.html");
    exit;
    }

    if (
    strlen($email) == )
    {
    header("Location: Fail.html");
    exit;
    }

    if (
    strlen($phone) == )
    {
    header("Location: Fail.html");
    exit;
    }

    if (
    strlen($address) == )
    {
    header("Location: Fail.html");
    exit;
    }

    if (
    strlen($area) == )
    {
    header("Location: Fail.html");
    exit;
    }


    if (
    strlen($Sample_N) == )
    {
    header("Location: Fail.html");
    exit;
    }


    //Sending Email to form owner
    $pfw_header "From: $email\r\n"
      
    "Reply-To: $email\r\n";
    $pfw_subject "ams submission";
    $pfw_email_to "ra@paleoresearch.com";
    $pfw_message "Visitor's IP: $pfw_ip\r\n"
    "name: $name\n"
    "organization: $organization\n"
    "email: $email\n"
    "phone: $phone\n"
    "fax: $fax\n"
    "address: $address\n"
    "payor: $payor\n"
    "payorganization: $payorganization\n"
    "payemail: $payemail\n"
    "payphone: $payphone\n"
    "payfax: $payfax\n"
    "payaddress: $payaddress\n"
    "area: $area\n"
    "comments: $comments\n"
    "requests: $requests\n"
    "Credit: $Credit\n"
    "Check: $Check\n"
    "Bill: $Bill\n"
    "urgency: $urgency\n"
    "Sample_N: $Sample_N\n"
    "sampleNumber1: $sampleNumber1\n"
    "Charcoal1: $Charcoal1\n"
    "Uncharred1: $Uncharred1\n"
    "Sort1: $Sort1\n"
    "Sediment1: $Sediment1\n"
    "seaShell1: $seaShell1\n"
    "ceramicResidue1: $ceramicResidue1\n"
    "bone1: $bone1\n"
    "Other1: $Other1\n"
    "sampleNumber2: $sampleNumber2\n"
    "Charcoal2: $Charcoal2\n"
    "Uncharred2: $Uncharred2\n"
    "Sort2: $Sort2\n"
    "Sediment2: $Sediment2\n"
    "seaShell2: $seaShell2\n"
    "ceramicResidue2: $ceramicResidue2\n"
    "bone2: $bone2\n"
    "Other2: $Other2\n"
    "sampleNumber3: $sampleNumber3\n"
    "Charcoal3: $Charcoal3\n"
    "Uncharred3: $Uncharred3\n"
    "Sort3: $Sort3\n"
    "Sediment3: $Sediment3\n"
    "seaShell3: $seaShell3\n"
    "ceramicResidue3: $ceramicResidue3\n"
    "bone3: $bone3\n"
    "Other3: $Other3\n"
    "sampleNumber4: $sampleNumber4\n"
    "Charcoal4: $Charcoal4\n"
    "Uncharred4: $Uncharred4\n"
    "Sort4: $Sort4\n"
    "Sediment4: $Sediment4\n"
    "seaShell4: $seaShell4\n"
    "ceramicResidue4: $ceramicResidue4\n"
    "bone4: $bone4\n"
    "Other4: $Other4\n"
    "sampleNumber5: $sampleNumber5\n"
    "Charcoal5: $Charcoal5\n"
    "Uncharred5: $Uncharred5\n"
    "Sort5: $Sort5\n"
    "Sediment5: $Sediment5\n"
    "seaShell5: $seaShell5\n"
    "ceramicResidue5: $ceramicResidue5\n"
    "bone5: $bone5\n"
    "Other5: $Other5\n"
    "sampleNumber6: $sampleNumber6\n"
    "Charcoal6: $Charcoal6\n"
    "Uncharred6: $Uncharred6\n"
    "Sort6: $Sort6\n"
    "Sediment6: $Sediment6\n"
    "seaShell6: $seaShell6\n"
    "ceramicResidue6: $ceramicResidue6\n"
    "bone6: $bone6\n"
    "Other6: $Other6\n"
    "sampleNumber7: $sampleNumber7\n"
    "Charcoal7: $Charcoal7\n"
    "Uncharred7: $Uncharred7\n"
    "Sort7: $Sort7\n"
    "Sediment7: $Sediment7\n"
    "seaShell7: $seaShell7\n"
    "ceramicResidue7: $ceramicResidue7\n"
    "bone7: $bone7\n"
    "Other7: $Other7\n"
    "sampleNumber8: $sampleNumber8\n"
    "Charcoal8: $Charcoal8\n"
    "Uncharred8: $Uncharred8\n"
    "Sort8: $Sort8\n"
    "Sediment8: $Sediment8\n"
    "seaShell8: $seaShell8\n"
    "ceramicResidue8: $ceramicResidue8\n"
    "bone8: $bone8\n"
    "Other8: $Other8\n"
    "sampleNumber9: $sampleNumber9\n"
    "Charcoal9: $Charcoal9\n"
    "Uncharred9: $Uncharred9\n"
    "Sort9: $Sort9\n"
    "Sediment9: $Sediment9\n"
    "seaShell9: $seaShell9\n"
    "ceramicResidue9: $ceramicResidue9\n"
    "bone9: $bone9\n"
    "Other9: $Other9\n"
    "sampleNumber10: $sampleNumber10\n"
    "Charcoal10: $Charcoal10\n"
    "Uncharred10: $Uncharred10\n"
    "Sort10: $Sort10\n"
    "Sediment10: $Sediment10\n"
    "seaShell10: $seaShell10\n"
    "ceramicResidue10: $ceramicResidue10\n"
    "bone10: $bone10\n"
    "Other10: $Other10\n";
    @
    mail($pfw_email_to$pfw_subject ,$pfw_message ,$pfw_header ) ;

    //Sending auto respond Email to visitor
    $pfw_header "From: [email]ams@paleoresearch.com[/email]\r\n"
      
    "Reply-To: [email]ams@paleoresearch.com[/email]\r\n";
    $pfw_subject "AMS info sent";
    $pfw_email_to "$email";
    $pfw_message "Your AMS sample information was sent.  We will be contacting you at the phone number provided within the next two business days.\n"
    "\n"
    "Thank You\n"
    "PaleoResearch Institute";
    @
    mail($pfw_email_to$pfw_subject ,$pfw_message ,$pfw_header ) ;

    header("Location: success.html");

    ?>
    Last edited by tech_support; 04-10-2007 at 02:14 AM. Reason: Added [PHP] brackets.

  2. #2
    Join Date
    Jun 2005
    Location
    英国
    Posts
    11,876
    Thanks
    1
    Thanked 180 Times in 172 Posts
    Blog Entries
    2

    Default

    Code:
    // Validation
     if (strlen($name) == 0 )
     {
     header("Location: Fail.html");
     exit;
     }
     
     if (strlen($organization) == 0 )
     {
     header("Location: Fail.html");
     exit;
     }
     
     if (! ereg('[A-Za-z0-9_-]+\@[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+', $email))
     {
     header("Location: Fail.html");
     exit;
     }
     
     if (strlen($email) == 0 )
     {
     header("Location: Fail.html");
     exit;
     }
     
     if (strlen($phone) == 0 )
     {
     header("Location: Fail.html");
     exit;
     }
     
     if (strlen($address) == 0 )
     {
     header("Location: Fail.html");
     exit;
     }
     
     if (strlen($area) == 0 )
     {
     header("Location: Fail.html");
     exit;
     }
     
     
     if (strlen($Sample_N) == 0 )
     {
     header("Location: Fail.html");
     exit;
     }
    Firstly, you're relying on register_globals, which is a Bad Idea&#174;. Secondly, this will throw a warning if the variables don't exist. Thirdly, redirecting using HTTP requires an absolute URI according to the specification. Fourthly, your email address regex rejects several perfectly valid address (like us@er@domain.com, for example), so let's drop it. Fifthly, this whole thing can be written like so:
    Code:
    // Validation
    $required_fields = array('name', 'organization', 'email', 'phone', 'address', 'area', 'Sample_N');
    for($i = 0; $i < count($required_fields); ++$i)
      if(empty($_REQUEST[$required_fields[$i]]))
        die(header('Location: http://www.yoursite.com/Fail.html'));
    Code:
    $pfw_message = "Visitor's IP: $pfw_ip\r\n"
     . "name: $name\n"
     . "organization: $organization\n"
     . "email: $email\n"
     . "phone: $phone\n"
     . "fax: $fax\n"
     . "address: $address\n"
     . "payor: $payor\n"
     . "payorganization: $payorganization\n"
     . "payemail: $payemail\n"
     . "payphone: $payphone\n"
     . "payfax: $payfax\n"
     . "payaddress: $payaddress\n"
     . "area: $area\n"
     . "comments: $comments\n"
     . "requests: $requests\n"
     . "Credit: $Credit\n"
     . "Check: $Check\n"
     . "Bill: $Bill\n"
     . "urgency: $urgency\n"
     . "Sample_N: $Sample_N\n"
     . "sampleNumber1: $sampleNumber1\n"
     . "Charcoal1: $Charcoal1\n"
     . "Uncharred1: $Uncharred1\n"
     . "Sort1: $Sort1\n"
     . "Sediment1: $Sediment1\n"
     . "seaShell1: $seaShell1\n"
     . "ceramicResidue1: $ceramicResidue1\n"
     . "bone1: $bone1\n"
     . "Other1: $Other1\n"
     . "sampleNumber2: $sampleNumber2\n"
     . "Charcoal2: $Charcoal2\n"
     . "Uncharred2: $Uncharred2\n"
     . "Sort2: $Sort2\n"
     . "Sediment2: $Sediment2\n"
     . "seaShell2: $seaShell2\n"
     . "ceramicResidue2: $ceramicResidue2\n"
     . "bone2: $bone2\n"
     . "Other2: $Other2\n"
     . "sampleNumber3: $sampleNumber3\n"
     . "Charcoal3: $Charcoal3\n"
     . "Uncharred3: $Uncharred3\n"
     . "Sort3: $Sort3\n"
     . "Sediment3: $Sediment3\n"
     . "seaShell3: $seaShell3\n"
     . "ceramicResidue3: $ceramicResidue3\n"
     . "bone3: $bone3\n"
     . "Other3: $Other3\n"
     . "sampleNumber4: $sampleNumber4\n"
     . "Charcoal4: $Charcoal4\n"
     . "Uncharred4: $Uncharred4\n"
     . "Sort4: $Sort4\n"
     . "Sediment4: $Sediment4\n"
     . "seaShell4: $seaShell4\n"
     . "ceramicResidue4: $ceramicResidue4\n"
     . "bone4: $bone4\n"
     . "Other4: $Other4\n"
     . "sampleNumber5: $sampleNumber5\n"
     . "Charcoal5: $Charcoal5\n"
     . "Uncharred5: $Uncharred5\n"
     . "Sort5: $Sort5\n"
     . "Sediment5: $Sediment5\n"
     . "seaShell5: $seaShell5\n"
     . "ceramicResidue5: $ceramicResidue5\n"
     . "bone5: $bone5\n"
     . "Other5: $Other5\n"
     . "sampleNumber6: $sampleNumber6\n"
     . "Charcoal6: $Charcoal6\n"
     . "Uncharred6: $Uncharred6\n"
     . "Sort6: $Sort6\n"
     . "Sediment6: $Sediment6\n"
     . "seaShell6: $seaShell6\n"
     . "ceramicResidue6: $ceramicResidue6\n"
     . "bone6: $bone6\n"
     . "Other6: $Other6\n"
     . "sampleNumber7: $sampleNumber7\n"
     . "Charcoal7: $Charcoal7\n"
     . "Uncharred7: $Uncharred7\n"
     . "Sort7: $Sort7\n"
     . "Sediment7: $Sediment7\n"
     . "seaShell7: $seaShell7\n"
     . "ceramicResidue7: $ceramicResidue7\n"
     . "bone7: $bone7\n"
     . "Other7: $Other7\n"
     . "sampleNumber8: $sampleNumber8\n"
     . "Charcoal8: $Charcoal8\n"
     . "Uncharred8: $Uncharred8\n"
     . "Sort8: $Sort8\n"
     . "Sediment8: $Sediment8\n"
     . "seaShell8: $seaShell8\n"
     . "ceramicResidue8: $ceramicResidue8\n"
     . "bone8: $bone8\n"
     . "Other8: $Other8\n"
     . "sampleNumber9: $sampleNumber9\n"
     . "Charcoal9: $Charcoal9\n"
     . "Uncharred9: $Uncharred9\n"
     . "Sort9: $Sort9\n"
     . "Sediment9: $Sediment9\n"
     . "seaShell9: $seaShell9\n"
     . "ceramicResidue9: $ceramicResidue9\n"
     . "bone9: $bone9\n"
     . "Other9: $Other9\n"
     . "sampleNumber10: $sampleNumber10\n"
     . "Charcoal10: $Charcoal10\n"
     . "Uncharred10: $Uncharred10\n"
     . "Sort10: $Sort10\n"
     . "Sediment10: $Sediment10\n"
     . "seaShell10: $seaShell10\n"
     . "ceramicResidue10: $ceramicResidue10\n"
     . "bone10: $bone10\n"
     . "Other10: $Other10\n";
    Again, owch! Not only is this much longer than it needs to be, again, but you're mixing Windows and UNIX linebreaks. Make up your mind. Using Windows linebreaks is probably safest, since almost all UNIX programs are smart enough to recognise and deal with Windows linebreaks, while the reverse is far from true. Try:
    Code:
    $pfw_message = "Visitor's IP: $pfw_ip\r\n";
    foreach($_POST as $k => $v)
      $pfw_message .= "$k: $v\r\n";
    Code:
    @mail($pfw_email_to, $pfw_subject ,$pfw_message ,$pfw_header) ;
    Rather than suppressing errors with @ (which is a bad idea, by the way: if there's an error you should deal with it, and if you don't want to deal with errors you should suppress them globally using error_handling(E_NONE)), try actually checking that the email has been sent. So, finally, the script becomes:
    Code:
    <?php
    // Validation
    $required_fields = array('name', 'organization', 'email', 'phone', 'address', 'area', 'Sample_N');
    for($i = 0; $i < count($required_fields); ++$i)
      if(empty($_REQUEST[$required_fields[$i]]))
        die(header('Location: http://www.yoursite.com/Fail.html'));
    
    $pfw_message = "Visitor's IP: $pfw_ip\r\n";
    foreach($_POST as $k => $v)
      $pfw_message .= "$k: $v\r\n";
    
    if(!mail($pfw_email_to, $pfw_subject, $pfw_message, $pfw_header))
      die(header('Location: http://www.yoursite.com/Fail.html'));
    
    //Sending auto respond Email to visitor
    $pfw_header = "From: ams@paleoresearch.com\r\n" .
      "Reply-To: ams@paleoresearch.com\r\n\r\n";
    $pfw_subject = 'AMS info sent';
    $pfw_email_to = $email;
    $pfw_message = <<< END
    Your AMS sample information was sent. We will be contacting you at the phone number provided within the next two business days.
    
    Thank You
    PaleoResearch Institute
    END;
    
    if(!mail($pfw_email_to, $pfw_subject, $pfw_message, $pfw_header))
      die(header('Location: http://www.yoursite.com/success.html'));
    else
      die(header('Location: http://www.yoursite.com/success.html'));
    Last edited by Twey; 04-08-2007 at 08:31 PM.
    Twey | I understand English | 日本語が分かります | mi jimpe fi le jbobau | mi esperanton komprenas | je comprends français | entiendo español | tôi ít hiểu tiếng Việt | ich verstehe ein bisschen Deutsch | beware XHTML | common coding mistakes | tutorials | various stuff | argh PHP!

  3. #3
    Join Date
    Apr 2007
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    Thank you for the lesson. I will continue to work on this.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •