Solved

PHP Errors on PAge

Posted on 2015-02-24
21
67 Views
Last Modified: 2015-02-25
I have a site that I am working on.  When I go to the home page, and fill out a the form, everything is fine.  But when a colleage goes to the same site and fills out the form, he gets a PHP error:
http://23.101.151.179/

Can someone look and let me know what the issue is?  The issue was on my screen for a while cause I had a problem with my jQuery syntax.
0
Comment
Question by:rgranlund
  • 7
  • 6
  • 3
  • +4
21 Comments
 
LVL 31

Expert Comment

by:Marco Gasi
ID: 40629071
Beh, without seeing the code I can just say the same thing the error message says: the variable DB result to be undefined...
Can you show the code of the script?
0
 
LVL 6

Expert Comment

by:rjohnsonjr
ID: 40629077
Can you paste the error?
0
 
LVL 38

Expert Comment

by:Tom Beck
ID: 40629078
libraries/Functions.php(688) : eval()'d code
0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 
LVL 83

Accepted Solution

by:
Dave Baldwin earned 500 total points
ID: 40629087
Here is what I see.  Most developers would tell you that using 'eval' is potentially a very bad practice.  If done so someone can inject their own code there, they can run anything.  It can be worse than SQL injection.
PHP error
0
 
LVL 7

Author Comment

by:rgranlund
ID: 40629102
But why would I not be getting the error on my screen?
0
 
LVL 83

Expert Comment

by:Dave Baldwin
ID: 40629155
Because there is something about your account that is already saved and being used.  Switch to a different browser or even a different computer and check it again.
0
 
LVL 7

Author Comment

by:rgranlund
ID: 40629333
Please try again.
0
 
LVL 83

Expert Comment

by:Dave Baldwin
ID: 40629401
Just...

{!-- ra:000000007803329500000000137c1794 --}
0
 
LVL 7

Author Comment

by:rgranlund
ID: 40629486
Here is the code I have.  Maybe that will help:
<?php

class Quote {
		
	private $EE;
	private $html;
	private $start_price;
	private $bs;
	private $bike_value;
	private $adjusted_start_price;
	private $policy_number;
	

	
	/**
	 * Constructor
	 */
	public function __construct()
	{
		$this->EE =& get_instance();
		$this->html = '';
		$this->starting_price = '';
		$this->bs = '';
		$this->bike_value = '';
		$this->adjusted_start_price = '';
		$this->policy_number = '';
	}

	
	
	 
	public function renderQuote() {

    $ip = $_SERVER['REMOTE_ADDR'];
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }

	if(isset($_POST['get_quote'])) { // Handle the form.)
		$bv = $_POST['bike_value'];
		$bs = $_POST['bike_state'];
		$be = $_POST['email_value'];
							
				
		$email_query = $this->EE->db->select('email_address')
				->from('exp_bicycle_addresses')
				->where('email_address', $be)
				->limit('1')
				->get();
		
		$emthere = $email_query->result();
		
		$email_query->free_result();	
		
		
		
			
			if(!$emthere)	{

	//  START INSERT EMAIL ADDRESS INTO DB
				$email_data = array('email_address'=> $be, 'date'=> 'NOW()', 'ip'=> $ip);
				$sql_e = $this->EE->db->insert_string('exp_bicycle_addresses', $email_data);
				
				$DB->query($sql_e);
	//  END INSERT EMAIL INTO DB
			} 
			
		
//  START CREAT QUOTE
		$create_quote = ee()->db->query("SELECT id, state, pd_base_rate FROM exp_state_rates WHERE id = '$bs'");
		
		$state_data = $create_quote->result();

			
		foreach ($state_data AS $row):
			
				$div = 100;
    			$id = $row->id;
				$st = $row->state; 
		 		$br = $row->pd_base_rate;
		endforeach;
    			$rate = $bv/$div;
				$sub_price = $br * $rate;
				$sub_p = number_format($sub_price, 2, '.', ',');
				$html = $sub_price;
				$html = number_format($html, 2, '.', ',');
				$month = 12;
				$month = $html/$month;
				$month = number_format($month, 2, '.', ',');

				if ($html > 100) {
					$this->html .= '<input type="hidden" name="state_value" value="'.$html.'" />';
					$this->html .= '<br />Your Estimated Base Rate:  &nbsp;&nbsp;<span class="price-lrg">  $<span id="estimate_year" class="price">'.$html.'</span> per year</span>';
				}

				if ($html < 100)	{
					$this->html .= '<input type="hidden" name="state_value" value="100" />';
					$this->html .= '<br />Your Estimated Base Rate:  &nbsp;&nbsp; <span class="price-lrg">$100 per year</span>';
				}
				
				$this->html .= '<div style="clear:both;padding:0px 0px 13px 0px;">
	Includes Theft, Damage, Worldwide Damage Coverage, Rental Reimbursement and Roadside Assistance
</div>
<div class="clear"></div>
<h1 itemprop="name" class="product_title entry-title">Custom Bicycle Insurance From Spoke</h1>';

	 			if($html<100) {
	 				$this->starting_price = 100;	
				} else{
					$this->starting_price = $html;
				}
				
				if($sub_p < 100) {
					$this->adjusted_start_price = 100;
				} else {
				$this->adjusted_start_price = $sub_p;
				}
				
				if($bv != '') {
					$this->bike_value = $bv;	
				}
		}  //  END Form isset
		
		
//  START EMPTY QUOTE
/*This part of the code is exactly the same as the top but without the Email Entry part
 * 
 */
 
 	if(isset($_POST['get_empty_quote'])) { // Handle the form.)
		$bv = $_POST['bike_value'];
		$bs = $_POST['bike_state'];
		
//  START CREATE QUOTE

		$create_quote = $this->EE->db->select('id, state, pd_base_rate')
				->from('exp_state_rates')
				->where('id', $bs)
				->limit('1')
				->get();
		
		$state_data = $create_quote->result();
		
		$create_quote->free_result();	

	
		foreach ($state_data AS $row):
			
				$div = 100;
    			$id = $row->id;
				$st = $row->state; 
		 		$br = $row->pd_base_rate;
		endforeach;
    			$rate = $bv/$div;
				$sub_price = $br * $rate;
				$sub_p = number_format($sub_price, 2, '.', ',');
				$html = $sub_price;
				$html = number_format($html, 2, '.', ',');
				$month = 12;
				$month = $html/$month;
				$month = number_format($month, 2, '.', ',');

				if ($html > 100) {
					$this->html .= '<input type="hidden" name="state_value" value="'.$html.'" />';
					$this->html .= '<br />Your Estimated Base Rate:  &nbsp;&nbsp;<span class="price-lrg">  $<span id="estimate_year" class="price">'.$html.'</span> per year</span>';
				}

				if ($html < 100)	{
					$this->html .= '<input type="hidden" name="state_value" value="100" />';
					$this->html .= '<br />Your Estimated Base Rate:  &nbsp;&nbsp; <span class="price-lrg">$100 per year</span>';
				}
				
				$this->html .= '<div style="clear:both;padding:0px 0px 13px 0px;">
	Includes Theft, Damage, Worldwide Damage Coverage, Rental Reimbursement and Roadside Assistance
</div>
<div class="clear"></div>
<h1 itemprop="name" class="product_title entry-title">Custom Bicycle Insurance From Spoke</h1>';

				if($html<100) {
	 				$this->starting_price = 100;	
				} else{
					$this->starting_price = $html;
				}
				
				if($sub_p < 100) {
					$this->adjusted_start_price = 100;
				} else {
				$this->adjusted_start_price = $sub_p;
				}
				
				if($bv != '') {
					$this->bike_value = $bv;	
				}

				
		}  //  END Form isset
//  END EMPTY QUOTE
	}  //  END Function
	
	
	public function getHTML()	{
		return $this->html;
	}
	
	public function getPrice()	{
		return $this->starting_price;
	}
	
	public function getState()	{
		return $this->bs;
	}
	
	public function getValue()	{
		return $this->bike_value;
	}
	
	public function getBasePrice()	{
		return $this->adjusted_start_price;	
	}
	
	public function policyNumber()	{	
		$query_id = $this->EE->db->order_by('row_id', 'desc')
				->limit('1')
				->get('exp_cartthrob_order_items');
		
		$order_id = $query_id->result_array();
		
		$query_id->free_result();
		
			foreach ($order_id as $row)
			{
				$policy_number = $row['row_id'];
			}
		return $policy_number;
	}
		
	
}  //  END Class

	$q = new Quote;
	$q->renderQuote();
	$bike_state = $q->getState();
	$bike_value = $q->getValue();
	$price = $q->getPrice();
	$base_price = $q->getBasePrice();
	$policy_number = $q->policyNumber();
                                
?>

Open in new window

0
 
LVL 83

Expert Comment

by:Dave Baldwin
ID: 40629517
At line 175, you have HTML added to a variable.  In line 176, you have HTML that is not part of PHP or a variable in PHP, just plain HTML.  That should be causing an error right there.  Maybe you should turn on error reporting at the top of that page.
0
 
LVL 7

Author Comment

by:rgranlund
ID: 40629544
I have error reporting on in that file and it reports nothing.  Also, Are you sure about those lines having error.  Those lines seem to be written correctly.

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');


class Quote {
		
	private $EE;
	private $html;
	private $start_price;
	private $bs;
	private $bike_value;
	private $adjusted_start_price;
	private $policy_number;
	

	
	/**
	 * Constructor
	 */
	public function __construct()
	{
		$this->EE =& get_instance();
		$this->html = '';
		$this->starting_price = '';
		$this->bs = '';
		$this->bike_value = '';
		$this->adjusted_start_price = '';
		$this->policy_number = '';
	}

	
	
	 
	public function renderQuote() {

    $ip = $_SERVER['REMOTE_ADDR'];
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }

	if(isset($_POST['get_quote'])) { // Handle the form.)
		$bv = $_POST['bike_value'];
		$bs = $_POST['bike_state'];
		$be = $_POST['email_value'];
							
				
		$email_query = $this->EE->db->select('email_address')
				->from('exp_bicycle_addresses')
				->where('email_address', $be)
				->limit('1')
				->get();
		
		$emthere = $email_query->result();
		
		$email_query->free_result();	
		
		
		
			
			if(!$emthere)	{

	//  START INSERT EMAIL ADDRESS INTO DB
				$email_data = array('email_address'=> $be, 'date'=> 'NOW()', 'ip'=> $ip);
				$sql_e = $this->EE->db->insert_string('exp_bicycle_addresses', $email_data);
				
				$DB->query($sql_e);
	//  END INSERT EMAIL INTO DB
			} 
			
		
//  START CREAT QUOTE
		$create_quote = ee()->db->query("SELECT id, state, pd_base_rate FROM exp_state_rates WHERE id = '$bs'");
		
		$state_data = $create_quote->result();

			
		foreach ($state_data AS $row):
			
				$div = 100;
    			$id = $row->id;
				$st = $row->state; 
		 		$br = $row->pd_base_rate;
		endforeach;
    			$rate = $bv/$div;
				$sub_price = $br * $rate;
				$sub_p = number_format($sub_price, 2, '.', ',');
				$html = $sub_price;
				$html = number_format($html, 2, '.', ',');
				$month = 12;
				$month = $html/$month;
				$month = number_format($month, 2, '.', ',');

				if ($html > 100) {
					$this->html .= '<input type="hidden" name="state_value" value="'.$html.'" />';
					$this->html .= '<br />Your Estimated Base Rate:  &nbsp;&nbsp;<span class="price-lrg">  $<span id="estimate_year" class="price">'.$html.'</span> per year</span>';
				}

				if ($html < 100)	{
					$this->html .= '<input type="hidden" name="state_value" value="100" />';
					$this->html .= '<br />Your Estimated Base Rate:  &nbsp;&nbsp; <span class="price-lrg">$100 per year</span>';
				}
				
				$this->html .= '<div style="clear:both;padding:0px 0px 13px 0px;">
	Includes Theft, Damage, Worldwide Damage Coverage, Rental Reimbursement and Roadside Assistance
</div>
<div class="clear"></div>
<h1 itemprop="name" class="product_title entry-title">Custom Bicycle Insurance From Spoke</h1>';

	 			if($html<100) {
	 				$this->starting_price = 100;	
				} else{
					$this->starting_price = $html;
				}
				
				if($sub_p < 100) {
					$this->adjusted_start_price = 100;
				} else {
				$this->adjusted_start_price = $sub_p;
				}
				
				if($bv != '') {
					$this->bike_value = $bv;	
				}
		}  //  END Form isset
		
		
//  START EMPTY QUOTE
/*This part of the code is exactly the same as the top but without the Email Entry part
 * 
 */
 
 	if(isset($_POST['get_empty_quote'])) { // Handle the form.)
		$bv = $_POST['bike_value'];
		$bs = $_POST['bike_state'];
		
//  START CREATE QUOTE

		$create_quote = $this->EE->db->select('id, state, pd_base_rate')
				->from('exp_state_rates')
				->where('id', $bs)
				->limit('1')
				->get();
		
		$state_data = $create_quote->result();
		
		$create_quote->free_result();	

	
		foreach ($state_data AS $row):
			
				$div = 100;
    			$id = $row->id;
				$st = $row->state; 
		 		$br = $row->pd_base_rate;
		endforeach;
    			$rate = $bv/$div;
				$sub_price = $br * $rate;
				$sub_p = number_format($sub_price, 2, '.', ',');
				$html = $sub_price;
				$html = number_format($html, 2, '.', ',');
				$month = 12;
				$month = $html/$month;
				$month = number_format($month, 2, '.', ',');

				if ($html > 100) {
					$this->html .= '<input type="hidden" name="state_value" value="'.$html.'" />';
					$this->html .= '<br />Your Estimated Base Rate:  &nbsp;&nbsp;<span class="price-lrg">  $<span id="estimate_year" class="price">'.$html.'</span> per year</span>';
				}

				if ($html < 100)	{
					$this->html .= '<input type="hidden" name="state_value" value="100" />';
					$this->html .= '<br />Your Estimated Base Rate:  &nbsp;&nbsp; <span class="price-lrg">$100 per year</span>';
				}
				
				$this->html .= '<div style="clear:both;padding:0px 0px 13px 0px;">Includes Theft, Damage, Worldwide Damage Coverage, Rental Reimbursement and Roadside Assistance</div><div class="clear"></div><h1 itemprop="name" class="product_title entry-title">Custom Bicycle Insurance From Spoke</h1>';

				if($html<100) {
	 				$this->starting_price = 100;	
				} else{
					$this->starting_price = $html;
				}
				
				if($sub_p < 100) {
					$this->adjusted_start_price = 100;
				} else {
				$this->adjusted_start_price = $sub_p;
				}
				
				if($bv != '') {
					$this->bike_value = $bv;	
				}

				
		}  //  END Form isset
//  END EMPTY QUOTE
	}  //  END Function
	
	
	public function getHTML()	{
		return $this->html;
	}
	
	public function getPrice()	{
		return $this->starting_price;
	}
	
	public function getState()	{
		return $this->bs;
	}
	
	public function getValue()	{
		return $this->bike_value;
	}
	
	public function getBasePrice()	{
		return $this->adjusted_start_price;	
	}
	
	public function policyNumber()	{	
		$query_id = $this->EE->db->order_by('row_id', 'desc')
				->limit('1')
				->get('exp_cartthrob_order_items');
		
		$order_id = $query_id->result_array();
		
		$query_id->free_result();
		
			foreach ($order_id as $row)
			{
				$policy_number = $row['row_id'];
			}
		return $policy_number;
	}
		
	
}  //  END Class

	$q = new Quote;
	$q->renderQuote();
	$bike_state = $q->getState();
	$bike_value = $q->getValue();
	$price = $q->getPrice();
	$base_price = $q->getBasePrice();
	$policy_number = $q->policyNumber();
                                
?>

Open in new window


This is PHP on the page before, however, I don't think it is that.

<form method="post" id="get_quote" action="/index.php/store/29">
	 <input type="hidden" name="csrf_token" value="{csrf_token}" />
	<div class="bike-value">
		<input type="text" name="bike_value" id="bike_value" value="<?php if(isset($_POST['bike_value'])) {echo $_POST['bike_value'];} else {echo 'Bike Value';} ?>"  onfocus="this.value='';" {sticky}/>
	</div><div class="bike-state">
		<select name="bike_state" id="bike_state" {sticky}>
			<div><option value="" style="display:none">Choose State</option></div>
			<?php
				$query = ee()->db->query('SELECT id, state FROM exp_state_rates');
				foreach ($query->result() AS $row)
				{
					echo '<option name="bike_state" class="option-center" value="'.$row->id.'" >'.$row->state.'</option>';	
				}
			?>
		</select>
	</div><div class="email-value">
		<input type="text" name="email_value" id="email_value" value="<?php if(isset($_POST['email_value'])) {echo $_POST['email_value'];} else {echo 'Email Address';} ?>" onfocus="this.value='';" />
	</div><div class="quote-submit">
		<input class="submit" type="submit" name="submit" id="submit" value="Generate Custom Quote" />
		<input type="hidden" name="get_quote" value="TRUE" />
	</div>	
	</form>

Open in new window

0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 40629594
What framework are you using here?
0
 
LVL 7

Author Comment

by:rgranlund
ID: 40629604
Expression Engine.  I had a friend in LA and a friend in Virgina run it and they had no error.
0
 
LVL 43

Expert Comment

by:Chris Stanyon
ID: 40629631
No errors for me (Win 7 / Firefox). Worked perfectly and gave me a quote of $100 / year for my bike :)

@Dave - line 176  (and 177, 178 & 179) are just an extension of line 175, so it's not an error.
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 40629633
No points for this, please, because it's certainly not an answer -- just a suggestion.  Have a look at the graphs on these pages, then kick Expression Engine to the curb.  If you need a CMS, WordPress is the right community to join.  And if you need a full framework take a serious look at Laravel.
http://trends.builtwith.com/cms
http://www.sitepoint.com/best-php-frameworks-2014/

BTW, Laravel includes all of the Symfony components.  If you do things exactly as documented in the online man pages, you can have an entire site up and running amazingly fast.
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 40629643
When I used the numeric URL, I got this:

The following errors were encountered

    This form has expired. Please refresh and try again.

Return to Previous Page

The reason is because I do not accept cookies (except from sites I know).  You might want to think about whether you really need to cookie the client browser and if so, you might want to include a test to see if the client is accepting cookies.
0
 
LVL 83

Expert Comment

by:Dave Baldwin
ID: 40629684
Oops, didn't see the single quotes.
0
 
LVL 83

Expert Comment

by:Dave Baldwin
ID: 40629687
And now I get this:

{!-- ra:000000000738d13100000000288eed7d --}
A PHP Error was encountered

Severity: Notice

Message: Undefined variable: DB

Filename: libraries/Functions.php(688) : eval()'d code

Line Number: 69
Fatal error: Call to a member function query() on a non-object in C:\inetpub\StarrSpokeDev\system\expressionengine\libraries\Functions.php(688) : eval()'d code on line 69
0
 
LVL 7

Author Comment

by:rgranlund
ID: 40630789
The person running the server said it had something to do with propagation?
0
 
LVL 7

Author Closing Comment

by:rgranlund
ID: 40630794
Thank you for taking the time to look into this for me.  As it would turn out, it was some sort of server error.
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
insert into database through form with dynamic fields. 2 28
php convert date format 3 21
Php recording post 4 36
Can't get js include to work in html file 8 8
Build an array called $myWeek which will hold the array elements Today, Yesterday and then builds up the rest of the week by the name of the day going back 1 week.   (CODE) (CODE) Then you just need to pass your date to the function. If i…
Introduction Knockoutjs (Knockout) is a JavaScript framework (Model View ViewModel or MVVM framework).   The main ideology behind Knockout is to control from JavaScript how a page looks whilst creating an engaging user experience in the least …
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

808 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question