FORUMS


The Form Tools forums are no longer active, but the old posts have been archived here. Please see the Help page on how to get help / report issues.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
After submit blank Process.php
#1
I hope I am close to getting this form working. When the user clicks submit we go to a blank Process.php page, however the results are correctly sent to Form Tools. I dohave a redirect specified in Form Tools for this form, but it doesnt go past process.php.

I am new to CMSMS and Formtools so thanks in advance for any help in resolving this problem.

Here is my process.php:

PHP Code:
<?php

/**
 * File: process.php
 *
 * This file processes any form submissions for forms already added and configured within Form Tools. To
 * use it, just point your form to this file, like so:
 *
 *   <form method="post" action="/path/to/process.php">
 *
 * Once the form has been added through the Form Tools UI, this script parses the form contents
 * and adds it to the database then redirects the user to whatever page is required. In addition,
 * this script is used to initially set up the form within the database, to map input fields to
 * database columns and types.
 */


// always include the core library functions
$folder dirname(__FILE__);
require_once(
"$folder/global/library.php");

// if the API is supplied, include it as well
$folder dirname(__FILE__);
@include_once(
"$folder/global/api/api.php");


// check we're receiving something
if (empty($_POST))
{
  
$page_vars = array("message_type" => "error""message" => $LANG["processing_no_post_vars"]);
  
ft_display_page("error.tpl"$page_vars);
  exit;
}

// check there's a form ID included
else if (empty($_POST["form_tools_form_id"]))
{
  
$page_vars = array("message_type" => "error""message" => $LANG["processing_no_form_id"]);
  
ft_display_page("error.tpl"$page_vars);
  exit;
}

// is this an initialization submission?
else if (isset($_POST["form_tools_initialize_form"]))
  
ft_initialize_form($_POST);

// otherwise, it's a regular form submission. Process it!
else
  
ft_process_form($_POST);

// -------------------------------------------------------------------------------------------------

/**
 * This function processes the form submissions, after the form has been set up in the database.
 */
function ft_process_form($form_data)
{
  global 
$g_table_prefix$g_multi_val_delimiter$g_query_str_multi_val_separator$g_root_dir$LANG,
    
$g_api_version$g_api_recaptcha_private_key;

  
// ensure the incoming values are escaped
  
$form_data ft_sanitize($form_data);

  
$form_id $form_data["form_tools_form_id"];
  
$form_info ft_get_form($form_id);

  
// do we have a form for this id?
  
if (!ft_check_form_exists($form_id))
  {
    
$page_vars = array("message_type" => "error""message" => $LANG["processing_invalid_form_id"]);
    
ft_display_page("error.tpl"$page_vars);
    exit;
  }

  
extract(ft_process_hook_calls("start"compact("form_info""form_id""form_data"), array("form_data")), EXTR_OVERWRITE);

  
// check to see if this form has been completely set up
  
if ($form_info["is_complete"] == "no")
  {
    
$page_vars = array("message_type" => "error""message" => $LANG["processing_form_incomplete"]);
    
ft_display_page("error.tpl"$page_vars);
    exit;
  }

  
// check to see if this form has been disabled
  
if ($form_info["is_active"] == "no")
  {
    if (isset(
$form_data["form_tools_inactive_form_redirect_url"]))
    {
      
header("location: {$form_data["form_tools_inactive_form_redirect_url"]}");
      exit;
    }

    
$page_vars = array("message_type" => "error""message" => $LANG["processing_form_disabled"]);
    
ft_display_page("error.tpl"$page_vars);
    exit;
  }

  
// do we have a form for this id?
  
if (!ft_check_form_exists($form_id))
  {
    
$page_vars = array("message_type" => "error""message" => $LANG["processing_invalid_form_id"]);
    
ft_display_page("error.tpl"$page_vars);
    exit;
  }


  
// was there a reCAPTCHA response? If so, a recaptcha was just submitted. This generally implies the
  // form page included the API, so check it was entered correctly. If not, return the user to the webpage
  
if (isset($g_api_version) && isset($form_data["recaptcha_response_field"]))
  {
    
$passes_captcha false;
    
$recaptcha_challenge_field $form_data["recaptcha_challenge_field"];
    
$recaptcha_response_field  $form_data["recaptcha_response_field"];

    
$folder dirname(__FILE__);
    require_once(
"$folder/global/api/recaptchalib.php");

    
$resp recaptcha_check_answer($g_api_recaptcha_private_key$_SERVER["REMOTE_ADDR"], $recaptcha_challenge_field$recaptcha_response_field);

    if (
$resp->is_valid)
      
$passes_captcha true;
    else
    {
      
// since we need to pass all the info back to the form page we do it by storing the data in sessions. Enable 'em.
      
@ft_api_start_sessions();
      
$_SESSION["form_tools_form_data"] = $form_data;
      
$_SESSION["form_tools_form_data"]["api_recaptcha_error"] = $resp->error;

      
// if there's a form_tools_form_url specified, redirect to that
      
if (isset($form_data["form_tools_form_url"]))
      {
        
header("location: {$form_data["form_tools_form_url"]}");
        exit;
      }
      
// if not, see if the server has the redirect URL specified
      
else if (isset($_SERVER["HTTP_REFERER"]))
      {
        
header("location: {$_SERVER["HTTP_REFERER"]}");
        exit;
      }
      
// no luck! Throw an error
      
else
      {
        
$page_vars = array("message_type" => "error""message" => $LANG["processing_no_form_url_for_recaptcha"]);
        
ft_display_page("error.tpl"$page_vars);
        exit;
      }
    }
  }


  
// get a list of the custom form fields (i.e. non-system) for this form
  
$form_fields ft_get_form_fields($form_id, array("include_field_type_info" => true));

  
$custom_form_fields = array();
  
$file_fields = array();
  foreach (
$form_fields as $field_info)
  {
    
$field_id        $field_info["field_id"];
    
$is_system_field $field_info["is_system_field"];
    
$field_name      $field_info["field_name"];

    
// ignore system fields
    
if ($is_system_field == "yes")
      continue;

    if (
$field_info["is_file_field"] == "no")
    {
      
$custom_form_fields[$field_name] = array(
        
"field_id"    => $field_id,
        
"col_name"    => $field_info["col_name"],
        
"field_title" => $field_info["field_title"],
        
"include_on_redirect" => $field_info["include_on_redirect"],
        
"field_type_id" => $field_info["field_type_id"],
        
"is_date_field" => $field_info["is_date_field"]
      );
    }
    else
    {
      
$file_fields[] = array(
        
"field_id"   => $field_id,
        
"field_info" => $field_info
      
);
    }
  }

  
// now examine the contents of the POST/GET submission and get a list of those fields
  // which we're going to update
  
$valid_form_fields = array();
  while (list(
$form_field$value) = each($form_data))
  {
    
// if this field is included, store the value for adding to DB
    
if (array_key_exists($form_field$custom_form_fields))
    {
      
$curr_form_field $custom_form_fields[$form_field];

      
$cleaned_value $value;
      if (
is_array($value))
      {
        if (
$form_info["submission_strip_tags"] == "yes")
        {
          for (
$i=0$i<count($value); $i++)
            
$value[$i] = strip_tags($value[$i]);
        }

        
$cleaned_value implode("$g_multi_val_delimiter"$value);
      }
      else
      {
        if (
$form_info["submission_strip_tags"] == "yes")
          
$cleaned_value strip_tags($value);
      }

      
$valid_form_fields[$curr_form_field["col_name"]] = "'$cleaned_value'";
    }
  }

  
$now ft_get_current_datetime();
  
$ip_address $_SERVER["REMOTE_ADDR"];

  
$col_names array_keys($valid_form_fields);
  
$col_names_str join(", "$col_names);
  if (!empty(
$col_names_str))
    
$col_names_str .= ", ";

  
$col_values array_values($valid_form_fields);
  
$col_values_str join(", "$col_values);
  if (!empty(
$col_values_str))
    
$col_values_str .= ", ";

  
// build our query
  
$query "
    INSERT INTO 
{$g_table_prefix}form_$form_id ($col_names_str submission_date, last_modified_date, ip_address, is_finalized)
    VALUES (
$col_values_str '$now', '$now', '$ip_address', 'yes')
           "
;

  
// add the submission to the database (if form_tools_ignore_submission key isn't set by either the form or a module)
  
$submission_id "";
  if (!isset(
$form_data["form_tools_ignore_submission"]))
  {
    
$result mysql_query($query);

    if (!
$result)
    {
      
$page_vars = array("message_type" => "error""error_code" => 304"error_type" => "system",
        
"debugging"=> "Failed query in <b>" __FUNCTION__ ", " __FILE__ "</b>, line " __LINE__ .
            
": <i>" nl2br($query) . "</i>"mysql_error());
      
ft_display_page("error.tpl"$page_vars);
      exit;
    }

    
$submission_id mysql_insert_id();
    
extract(ft_process_hook_calls("end"compact("form_id""submission_id"), array()), EXTR_OVERWRITE);
  }


  
$redirect_query_params = array();

  
// build the redirect query parameter array
  
foreach ($form_fields as $field_info)
  {
    if (
$field_info["include_on_redirect"] == "no" || $field_info["is_file_field"] == "yes")
      continue;

    switch (
$field_info["col_name"])
    {
      case 
"submission_id":
        
$redirect_query_params[] = "submission_id=$submission_id";
        break;
      case 
"submission_date":
        
$settings ft_get_settings();
        
$submission_date_formatted ft_get_date($settings["default_timezone_offset"], $now$settings["default_date_format"]);
        
$redirect_query_params[] = "submission_date=" rawurlencode($submission_date_formatted);
        break;
      case 
"last_modified_date":
        
$settings ft_get_settings();
        
$submission_date_formatted ft_get_date($settings["default_timezone_offset"], $now$settings["default_date_format"]);
        
$redirect_query_params[] = "last_modified_date=" rawurlencode($submission_date_formatted);
        break;
      case 
"ip_address":
        
$redirect_query_params[] = "ip_address=$ip_address";
        break;

      default:
        
$field_name $field_info["field_name"];

        
// if $value is an array, convert it to a string, separated by $g_query_str_multi_val_separator
        
if (isset($form_data[$field_name]))
        {
          if (
is_array($form_data[$field_name]))
          {
            
$value_str join($g_query_str_multi_val_separator$form_data[$field_name]);
            
$redirect_query_params[] = "$field_name=" rawurlencode($value_str);
          }
          else
            
$redirect_query_params[] = "$field_name=" rawurlencode($form_data[$field_name]);
        }
        break;
    }
  }

  
// only upload files & send emails if we're not ignoring the submission
  
if (!isset($form_data["form_tools_ignore_submission"]))
  {
    
// now process any file fields. This is placed after the redirect query param code block above to allow whatever file upload
    // module to append the filename to the query string, if needed
    
extract(ft_process_hook_calls("manage_files"compact("form_id""submission_id""file_fields""redirect_query_params"), array("success""message""redirect_query_params")), EXTR_OVERWRITE);

    
// send any emails
    
ft_send_emails("on_submission"$form_id$submission_id);
  }

  
// if the redirect URL has been specified either in the database or as part of the form
  // submission, redirect the user [form submission form_tools_redirect_url value overrides
  // database value]
  
if (!empty($form_info["redirect_url"]) || !empty($form_data["form_tools_redirect_url"]))
  {
    
// build redirect query string
    
$redirect_url = (isset($form_data["form_tools_redirect_url"]) && !empty($form_data["form_tools_redirect_url"]))
      ? 
$form_data["form_tools_redirect_url"] : $form_info["redirect_url"];

    
$query_str "";
    if (!empty(
$redirect_query_params))
      
$query_str join("&"$redirect_query_params);

    if (!empty(
$query_str))
    {
      
// only include the ? if it's not already there
      
if (strpos($redirect_url"?"))
        
$redirect_url .= "&" $query_str;
      else
        
$redirect_url .= "?" $query_str;
    }

    
header("Location: " $redirect_url);
    exit;
  }

  
// the user should never get here! This means that the no redirect URL has been specified
  
$page_vars = array("message_type" => "error""message" => $LANG["processing_no_redirect_url"]);
  
ft_display_page("error.tpl"$page_vars);
  exit;


Here is what I believe is the pertinent part of the HTML:

Code:
<form action="http://californiaschooloflaw.com/forms/form_tools_2/process.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="form_tools_form_id" value="9" />
Reply
#2
Are you editing the process.php file to redirect? You actually don't need to add the redirect in the process.php file, you can do this directly through the Form Tools interface. Editing the process.php may be causing errors.

Cheers,

Joe
Reply
#3
Hey Joe thanks. No I am not. I just enter the redirect url in Form Tools during the setup. However submitting the form opens a blank process.php page and does not do the redirect.

(Feb 6th, 2014, 11:27 AM)Joe Wrote: Are you editing the process.php file to redirect? You actually don't need to add the redirect in the process.php file, you can do this directly through the Form Tools interface. Editing the process.php may be causing errors.

Cheers,

Joe

Reply
#4
You might want to do a system check with the system check module to ensure everything is operating properly: http://modules.formtools.org/system_check/

Cheers,

Joe
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)