A Little Noise

1Oct/122

Connection Conundrum

Define a user like this:

GRANT ALL ON *.* TO 'myuser'@'localhost' IDENTIFIED BY 'super$ecret';

Then try a PHP script like this:

<?php
mysqli_connect("localhost", "myuser", "super$ecret");
?>

What happens and why? How could you avoid it?

And for glory, what single line could you add that would prevent the error, without making any changes to the mysqli_connect line?

16Jun/062

On Request

Imagine you're a rat in a scientific lab. There are two doors leading into your cage, one red, one blue. Every morning, the red door opens, and a bit of cheese tumbles in. Sometimes you can eat the cheese, and all is well. Other times, there's a long silver thing stuck in it. You find that if you eat the cheese where it lies on the metal cage floor, it makes your tongue hurt, your paw jump, and gives you a very bad headache.

Filed under: PHP Continue reading
15Nov/051

Static Variable Variables

<?php
  class A {
    static function b() {
      echo "It works\n";
    }
  }
  $theClass = "A";
  $x = new $theClass;

  /* Are any of the following legal? Which? */

  A::b();
  $x->b();
  $theClass::b();
?>

Show Answer ▼

Filed under: PHP Gotchas 1 Comment
14Nov/050

Form Names

Given the following page:

<form>
  <input type="radio" name="BT.123" value="active" />
  <input type="radio" name="BT.123" value="inactive" />
  <input type="submit" value="Submit" />
</form>

<?php
  echo "GET: ", $_GET['BT.123'];
  echo "POST: ", $_POST['BT.123'];
  echo "REQUEST: ", $_REQUEST['BT.123'];
?>

Assume the "inactive" button is checked and the form is submitted. What is the output?
Show Answer ▼

Filed under: PHP Gotchas No Comments
12Nov/050

Post increment

<?php
$a = 4;
echo $a+++$a++;
?>

What is the output?
Show Answer ▼

Filed under: PHP Gotchas No Comments
11Nov/052

Concatenate

What, if anything, is the minimum change (fewest inserted/deleted/modified characters) required to make the output The result is bar:


<?php
class A {
  private $foo = "bar";
  public function __toString() {
    return $this->foo;
  }
}

$myObject = new A();
echo "The result is " . $myObject;
?>

Show Answer ▼

Filed under: PHP Gotchas 2 Comments