سؤال

So I can't find anything about why my form isn't sending the text the users are entering. Its only submitting blank fields using webformmailer.php and can't find any help on godaddy site either. I know I'm using the same id for the name and email fields so if that is really the problem I'll change it but I wouldn't think it is. Heres my code.

        <form id="contact-form" action="/webformmailer.php" method="POST" >

            <textarea id="textarea" placeholder="Message Here"></textarea>
            <input type="text"  id="username" name="Firstname" placeholder="Full Name" />
            <input type="text"  id="username" name="email" placeholder="Email"  />
            <input type="submit" name ="submit" value="Submit" />

        </form>

the file is generated from godaddy.com but heres the code. I also have a simple form with no textarea for messages that seems to work fine.

<?php

if ( !isset($_SERVER['SPI'])) {
    die();
}

if (!isset($_SERVER['DOCUMENT_ROOT'])) {
    echo("CRITICAL: we seem to be running outside of the norm.\n");
    header("Location: http://".$_SERVER["HTTP_HOST"]."/");
    die("CRITICAL: Document root unavailable.\n");
}

$request_method = $_SERVER["REQUEST_METHOD"];
if($request_method == "GET") {
    $query_vars = $_GET;
}
elseif ($request_method == "POST") {
    $query_vars = $_POST;
}

reset($query_vars);
function customsort($a,$b) {
    // $a is array for form vars, $b is comma seperated case sensitive field order
    // this is case sensitive -- good idea to hrc that.
    $data = array();
    if ( strstr($b,',') == FALSE )  {
            $b = $b.",";
    }
    $ordering = split(',',$b);
    foreach ($ordering as $orderitem) {
            if ( ($orderitem != null) && ($orderitem != "") ) {
                    if (isset($a[$orderitem])) {
                            $data[$orderitem] = $a[$orderitem];
                    }
            }
    }
    foreach ($a as $key=>$val) {
            $data[$key] = $a[$key];
    }
    return $data;
}

  function xmlentities($string) {
    return str_replace ( array('&', '"', "'", '<', '>'), array('&amp;', '&quot;',                    '&apos;', '&lt;', '&gt;'), $string);
    }

   $t = date("U");

  $formhomedir = preg_replace('/.*\/home\/content/','',$_SERVER['DOCUMENT_ROOT']);
  $formhomedir = explode('/',$formhomedir);
  if (count($formhomedir) <= 4) {
    $formhome="/home/content/".$formhomedir[1]."/".$formhomedir[2]."/data/";
  }
  else {
            $formhome="/home/content/".$formhomedir[1]."/".$formhomedir[2]."/".$formhomedir[3]."/".$form     homedir[4]."/data/";
}

 $file_order = ".default";
 $file_format = ".text";
 $file_interval = ".15m";
 $field_order = "";

if (isset($query_vars['form_order'])) {
    if ($query_vars['form_order'] != "alpha") {
            $field_order=$query_vars['form_order'];
            $file_order=".custom";
            $query_vars = customsort($query_vars,$field_order);
    }
    else {
            switch ($query_vars['form_order']) {
                    case "alpha":
                            uksort($query_vars,'strnatcasecmp');
                            $file_order=".alpha";
                    break;
                    default:
                            $file_order=".default";
                    break;
            }
    }
  }

if (isset($query_vars['form_format'])) {
    switch ($query_vars['form_format']) {
            case "csv":
                    $file_format = ".csv";
            break;
            case "html":
                    $file_format = ".html";
            break;
            case "xml":
                    $file_format = ".xml";
            break;
            case "text":
            case "default":
            default:
                    $file_format = ".text";
            break;
    }
}

if (isset($query_vars['form_delivery'])) {
    switch ($query_vars['form_delivery']) {
            case "hourly":
                    $file_interval = ".60m";
            break;
            case "hourly_digest":
                    $file_interval = ".60mc";
            break;
            case "daily":
                    $file_interval = ".24h";
            break;
            case "daily_digest":
                    $file_interval = ".24hc";
            break;
            case "digest":
                    $file_interval = ".15mc";
            break;
            case "default":
            default:
                    $file_interval = ".15m";
            break;
    }
}

$file = $formhome."form_".$t.$file_order.$file_format.$file_interval;
$fp = fopen($file,"w");

reset($query_vars);
switch ($file_format) {
    case ".csv":
            $csvkeys = "";
            $csvvals= "";
            $firsttime = "";
            while (list ($key, $val) = each ($query_vars)) {
                    if ( ($key == "form_order") ||
                            ($key == "form_format") ||
                            ($key == "form_delivery") ||
                            ($key == "redirect") ) {
                    }
                    else {
                            if ($csvkeys != "") {
                                    $firsttime=",";
                            }
                            $tmpkey=escapeshellcmd($key);
                            $csvkeys = $csvkeys.$firsttime."'".$tmpkey."'";
                            $tmpval=escapeshellcmd($val);
                            $csvvals = $csvvals.$firsttime."'".$tmpval."'";
                    }
            }
            fputs($fp,"$csvkeys\n");
            fputs($fp,"$csvvals\n");
    break;
    case ".html":
            fputs($fp,"<table border=\"1\" cellspacing=\"1\" cellpadding=\"2\">\n");
    break;
    case ".xml":
            fputs($fp,"<form>\n");
    break;
}

  reset($query_vars);
  while (list ($key, $val) = each ($query_vars)) {
    if ($key == "redirect") {
            $landing_page = $val;
    }
    if ( ($key == "form_order") ||
            ($key == "form_format") ||
            ($key == "form_delivery") ||
            ($key == "redirect") ) {

    }
    else {
            switch ($file_format) {
                    case ".html":
                            fputs($fp,"\t<tr>\n");
                            fputs($fp,"\t\t<td><b>$key</b></td>\n");
                            fputs($fp,"\t\t<td>$val</td>\n");
                            fputs($fp,"\t</tr>\n");

                    break;
                    case ".csv":
                            // content is already output
                    break;
                    case ".xml":
                       fputs($fp,"\t<field>\n");
                       fputs($fp,"\t\t<fieldname>".xmlentities($key)."
  </fieldname>\n");
                       fputs($fp,"\t\t<fieldvalue>".xmlentities($val)
  </fieldvalue>\n");
                            fputs($fp,"\t</field>\n");
                    break;
                    case ".text":
                    default:
                            fputs($fp,$key.": ".$val."\n");
                    break;
            }
    }
}

switch ($file_format) {
    case ".html":
            fputs($fp,"</table>\n");
    break;
    case ".xml":
            fputs($fp,"</form>\n");
    break;
}


fclose($fp);

if ($landing_page != "") {
    header("Location: http://".$_SERVER["HTTP_HOST"]."/$landing_page");
}
else {
    header("Location: http://".$_SERVER["HTTP_HOST"]."/");
}


?>
هل كانت مفيدة؟

المحلول

  • Your <textarea> doesn't have a name, so it can't be a successful control.
  • You never attempt to access $_POST['Firstname'] (or $query_vars['Firstname] for that matter)
  • Ditto $_POST['email']

Also your HTML is invalid (use a validator) and you are abusing the placeholder attribute as a label.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top