Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP - $_POST variables mixing with variables having the same name

Tags:

php

On the same page I have

$hello = 'Hello!';
$_POST['hello'] = '123';

If I echo $hello, instead of getting 'Hello!' I get '123'. How should I handle variables and $_POST variables with the same name?

This is an example of the real problem:

I have a signup form that looks like this (here's a minified sample of fields). Each input field has a label and the string variable in the label has the same name as the input.

<form id="form1" action="post.php">
  <span class="label"><?=$fullname?></span>
  //$fullname='Please enter your name';
  <input name="fullname" id="fullname" type="text">

  <span class="label"><?=$email?></span>
  //$email='Please enter your email';
  <input name="email" id="email" type="text">

  <input name="button1" id="button1" type="submit">
</form>

When I submit the form I post it to the same page and I display the values the user had filled out. Only that now, instead of $fullname displaying the value of the variable $fullname, it displays the value of $_POST['fullname']. Why does this happen?

like image 806
bikey77 Avatar asked Dec 21 '22 09:12

bikey77


2 Answers

probably you have register_globals turned on which is something that has been advised against for years already :) see here for details: http://php.net/manual/en/security.globals.php

like image 198
Yervand Aghababyan Avatar answered Dec 22 '22 21:12

Yervand Aghababyan


The problem probably lies with register_globals in php's .ini file. Turn this off, restart php and it should be fixed.

Try this to check the setting at the moment of execution of the code:

echo ini_get("register_globals");
like image 39
Manuel Avatar answered Dec 22 '22 23:12

Manuel