Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » Dexter 18:58
 » Adam 18:57
 » tuptun 18:52
 » lcf 18:52
 » Kenny 18:52
 » Wedrowiec 18:49
 » Artaa 18:47
 » jenot 18:47
 » DYD 18:45
 » Matti 18:44
 » ili@s 18:41
 » Promilus 18:41
 » @GUTEK@ 18:40
 » KHot 18:39
 » ligand17 18:39
 » PeKa 18:36
 » McMi21 18:33
 » coobav 18:31
 » szczebel 18:31
 » MARtiuS 18:28

 Dzisiaj przeczytano
 41139 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

mysql_escape_string dodaje mi niepotrzebny znak \ - slash , kubazzz 24/02/07 00:12
mamy taki oto kod:

$dodaj_tytul = mysql_escape_string($_POST['tytul']);
$dodaj_data = mysql_escape_string($_POST['data']);

$dodanie = "INSERT INTO $tabela (title,data) VALUES ('$dodaj_tytul','$dodaj_data')";

$result = mysql_query ($dodanie) or die ("Błąd: " . mysql_error());

...
to jest element kodu dodajacy tresc uzyskana metoda POST z formularza.
Problem jest taki, ze uzywacj mysql_escape_string uzycie znaku " [cudzyslow] albo ['] apostrof powoduje kosmos w bazie danych.

Oto wyczerpujacy przyklad.

W formularzu wpisuje tak:

<a href='hxxp://google.com'>Link</a>
<a href=\'hxxp://google.com\'>Link</a>
<a href="hxxp://google.com">Link</a>
<a href=\"hxxp://google.com\">Link</a>
<a href=''hxxp://google.com''>Link</a>

A to otrzymuje w podgladzie PHPMyAdmin albo po pobraniu z bazy danych:

<a href=\'hxxp://google.com\'>Link</a>
<a href=\\\'hxxp://google.com\\\'>Link</a>
<a href=\"hxxp://google.com\">Link</a>
<a href=\\\"hxxp://google.com\\\">Link</a>
<a href=\'\'hxxp://google.com\'\'>Link</a>
Jesli z kodu wyeliminuje mysql_escape_string to problemu nie ma.

Baza danych to MySQL 4.1.11, PHP4.

SM-S908

  1. no qrdwa już ci mówiłem , john565 24/02/07 00:22
    że str_replace zastosuj podczas odczytu z bazy, a to sie zqapisuje tak do bazy żeby nikt ci drop table nie zrobił

    (cybva że sie myle :P)

    f*ck

    1. hmm z tego co wiem , kubazzz 24/02/07 00:43
      to w bazie danych powinno byc zapisane BEZ tych slashow \.
      Tu jest problem w zapisie do bazy danych.
      Wywalenie ich na pozniejszym etapie nie jest niewykonalne, ale upierdliwe.

      SM-S908

      1. z tego co ja wiem... , john565 24/02/07 00:57
        możesz to zmienić w globalnych ustawieniach serwera gdzie leżą posczególne bazy, ale wtedy możliwe są ataki sql injection

        f*ck

  2. problem wciaz nierozwiazany i licze na jakies wskazowki , kubazzz 24/02/07 13:03
    dziekuje .

    SM-S908

  3. pewnie masz wlaczone standardowo Magic quotes , PaKu 24/02/07 13:05
    na serwerze i robia ci sie podwojne slashe. Zrob tak:

    if (!get_magic_quotes_gpc()) {
    $dodaj_tytul = mysql_escape_string($_POST['tytul']);
    $dodaj_data = mysql_escape_string($_POST['data']);
    }
    else{
    $dodaj_tytul = $_POST['tytul'];
    $dodaj_data = $_POST['data'];
    }

    bez podpisu

    1. hmm - wg phpinfo mam wlaczone ! , kubazzz 24/02/07 13:11
      magic_quotes_gpc On On

      Czyli moge wywalic to mysql_escape_string ?
      bo raczej nie zmienie ustawien serwera, a skrypt bedzie tylko na tym serwerze dzialal.

      SM-S908

      1. dokladniej , kubazzz 24/02/07 13:12
        magic_quotes_gpc On On
        magic_quotes_runtime Off Off
        magic_quotes_sybase Off Off

        SM-S908

      2. jesli nie bedziesz zmienial serwera , PaKu 24/02/07 13:15
        to mozesz wyrzucic, ale ja na twoim miejscu staralbym sie pisac jak najbardziej uniwersalny kod, sam sie kilka razy nacialem na tym a pozniej musialem sleczec nad kodem i poprawiac. Zrob sobie np tak:

        function Walidacja(string){

        if (!get_magic_quotes_gpc()) {
        return mysql_escape_string($string);
        }
        else{

        }
        }

        bez podpisu

        1. kurde za wczesnie poczlo :/ , PaKu 24/02/07 13:18
          function Walidacja(string){
          if (!get_magic_quotes_gpc())
          return mysql_escape_string($string);
          else
          return $string;
          }

          a pozniej

          $dodaj_tytul = Walidacja($_POST['tytul']);

          bez podpisu

        2. biorac pod uwage, ze kodu jest malutko , kubazzz 24/02/07 13:20
          to nie stanowi wiekszego problemu wylapanie to, ale moze rzeczywiscie zrobie uniwersalne rozwiazanie.

          SM-S908

  4. dzieki! , kubazzz 24/02/07 14:25
    dziala.

    SM-S908

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL