Działam na dwóch plikach strona.php i klasa.php. W pliku strona.php tworzę nowy obiekt mojej klasy, wywołując go z parametrem, który jest zapytaniem do bazy danych.
Przykładowo:
<?php $zmienna = new klasa("SELECT * FROM testowa;"); ?>
Klasa (konkretniej konstruktor) wysyła zapytanie. Całość działa jak najbardziej poprawnie. Ciekawi mnie jednak jak w tym momencie zachowują się magic quotes? Wiem, że teoretycznie wszystkie znaki specjalne (single/double quote, backslash czy NULL) są poprzedzone backslashem automatycznie. Efekt (wydaje mi się) ma być podobny jak przy addslashes()" title="Zobacz w manualu PHP" target="_manual.
Przy akcji gdzie
sprawi, że $zmienna = "Jak\'s PC"; Czy tego samego można się spodziewać po magic quotes? Czy jeżeli są włączone to powinny sprawiać, że Jak’s PC w bazie zamieni się na Jak\'s PC?
<?php ?>
Czy w ogóle (w moim przypadku) ma sens mieć na uwadze magic_quotes? Nawet jak na zmiennej robię wpierw addslashes()" title="Zobacz w manualu PHP" target="_manual to patrząc na bazę nie widzę tam tzw. podwójnego „escaping”.
Zakładając, że akcje, które wykonuje wyglądają tak:
<?php $string = "Jak's PC"; $zmienna = new klasa("INSERT INTO `baza`.`testowa` (`test`) VALUES('$string');"); ?>
A w klasie (klasa.php)
<?php function __construct($zapytanie) { [...] } ?>
Więc jak ostatecznie działa ten mechanizm?