Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zero jest usuwane, jeżeli jest pierwszym znakiem w rekordzie, Jakn temu zaradzić?
joka13
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 31.07.2009

Ostrzeżenie: (0%)
-----


Witam

Piszę stronę z niewielką bazą danych (mysql), ale napotkałem na problem, którego nie mogę znaleźć rozwiązania.

Wypełniam jakieś pole formularza - np kod pocztowy: 05155
Po wysłaniu formularza w bazie zapisze się 5155.
Co zrobić, żeby '0' nie było usuwane jeżeli jest pierwszym znakiem w rekordzie?

Można by użyć funkcji LPAD, ale to zadziała, jeżeli długość rekordu jest stała?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Mchl
post
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


Kod
function add_dboddzial($kodpocztowy,$prefix) {
  $prefix = mysql_real_escape_string($prefix);  //tędy też może przejść injection!
  $kodpocztowy = mysql_real_escape_string(strpad($kodpocztowy,5,'0',STR_PAD_LEFT));  //uzupełnienie zerami z lewej strony do 5 znaków
  $sql = "
    INSERT INTO
      {$prefix}oddzial
    VALUES
      ('$kodPocztowy')
  ";
  ...
}
Go to the top of the page
+Quote Post
joka13
post
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 31.07.2009

Ostrzeżenie: (0%)
-----


W tym wierszu musiałem dodać '_' w nazwie funkcji str_pad() i już wszystko działa:
Cytat
$kodpocztowy = mysql_real_escape_string(str_pad($kodpocztowy,5,'0',STR_PAD_LEFT));





Cytat(Mchl @ 7.03.2010, 12:49:28 ) *
$prefix = mysql_real_escape_string($prefix); //tędy też może przejść injection!

Jak się tu zabezpieczyć przed atakiem - wystarczy, że będzie sesja?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 02:58