Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] addslashes()
antoniak
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 24.03.2009

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


Witam,


W panelu administracyjnym dodaję treść za pomocą formularza addslashes($_POST['opis_pelny']) dla bezpieczeństwa, ale później dane wyświetlane
są w postaci wiadomo podwajanych \\ jeśli są w opisie " '

Czy są jakieś inne funkcje, które uchronią przed sql injection, a nie będą później te dane wyświetlane z backslash, chyba, że w panelu administracyjnym nie potrzebnie stosować tej metody?
Powód edycji: [Spawnm] Przeniosłem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
planet
post
Post #2





Grupa: Zarejestrowani
Postów: 61
Pomógł: 6
Dołączył: 15.07.2009
Skąd: Śląsk->Ruda Śląska

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


potem robisz stripslashes() przed wyświetleniem danych.
Go to the top of the page
+Quote Post
antoniak
post
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 24.03.2009

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


dzięki, ale w bazie danych każda edycja artykułu powoduje ciągle podwajanie \\\\\\ bo w formularza większość dodaje kod HTML

później wygląda tak


<div id=\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"

i cała reszta kodu, a to jeśli jest dużo artykułów to później te "śmieci" zajmują więcej na serwerze sciana.gif

Ten post edytował antoniak 31.07.2009, 13:30:41
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Próbowałeś z mysql_real_escape_string" title="Zobacz w manualu PHP" target="_manual ?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
antoniak
post
Post #5





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 24.03.2009

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


teraz sprawdzałem, ale niestety dalej dodaje do bazy danych backslash bo w kodzie HTML pełno mamy "
ale i nie tylko bo czasem też sam muszę używać " '

Edit: dodam, że kod HTML jest wprowadzany w textarea i dalej nie wiem, które zabezpieczenie zastosować, aby nie miałem backslash jeśli w tym kodzie znajduje się cudzysłów etc.
Go to the top of the page
+Quote Post
zeten
post
Post #6





Grupa: Zarejestrowani
Postów: 36
Pomógł: 2
Dołączył: 1.08.2009
Skąd: Katowice, Rybnik

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


  1. <?php
  2. $text = str_replace(''', '<cudzyslow>', $text); //zamieniamy znak ' na <cudzyslow>
  3.  
  4. $text = str_replace('<cudzyslow>', ''', $text); //zamieniamy <cudzyslow> na znak '
  5. ?>


;-)
Go to the top of the page
+Quote Post
antoniak
post
Post #7





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 24.03.2009

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


czyli teraz tak robię to pierwsze dodaję tam gdzie czytam z bazy danych, a drugie w miejsce gdzie jest formularz, który dodaje do bazy? ;-)
Go to the top of the page
+Quote Post
zeten
post
Post #8





Grupa: Zarejestrowani
Postów: 36
Pomógł: 2
Dołączył: 1.08.2009
Skąd: Katowice, Rybnik

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


Cytat(antoniak @ 2.08.2009, 14:00:49 ) *
czyli teraz tak robię to pierwsze dodaję tam gdzie czytam z bazy danych, a drugie w miejsce gdzie jest formularz, który dodaje do bazy? ;-)


  1. <?php
  2. $text = str_replace(''', '<cudzyslow>', $text); //zamieniamy znak ' na <cudzyslow>
  3. ?>


Tutaj 'kodujesz' dane, które będziesz umieszczał w bazie.

  1. <?php
  2. $text = str_replace('<cudzyslow>', ''', $text); //zamieniamy <cudzyslow> na znak '
  3. ?>


Tutaj 'dekodujesz' dane, które będziesz pobierał z bazy i wyświetlał na stronie.
Go to the top of the page
+Quote Post
antoniak
post
Post #9





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 24.03.2009

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


zrobiłem tak


function str_replace($teskt) {

$teskt = str_replace('<cudzysłów>', '\'', $teskt);

}
.................
i gdzie pobieram dane z bazy
$db->query("SELECT `id`, `xx`, '<cudzysłów> . str_replace(opis_pelny) . <cudzysłów>', `typ`,

i na stronie mam błąd
Warning: Wrong parameter count for str_replace() in właśnie w tej linijce, gdzie zaznaczam dane z bazy

Ten post edytował antoniak 2.08.2009, 15:11:39
Go to the top of the page
+Quote Post
zeten
post
Post #10





Grupa: Zarejestrowani
Postów: 36
Pomógł: 2
Dołączył: 1.08.2009
Skąd: Katowice, Rybnik

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


Cytat(antoniak @ 2.08.2009, 16:04:57 ) *
zrobiłem tak
function str_replace($teskt) {

$teskt = str_replace('"', '\'', $teskt);

}
.................
i gdzie pobieram dane z bazy
$db->query("SELECT `id`, `xx`, `'" . str_replace(opis_pelny) . "'`, `typ`,

i na stronie mam błąd
Warning: Wrong parameter count for str_replace() in właśnie w tej linijce, gdzie zaznaczam dane z bazy


Nie można tworzyć funkcji o nazwie istniejącej funkcji ;-)

  1. <?php
  2. function apostrof($txt) {
  3.   $txt = str_replace(''', '<apostrof>', $txt);
  4.   RETURN $txt;    
  5. }
  6. ?>


;-) No ale nie wiem czy Ci to pomoże. W bazie zamiast ' będziesz miał <apostrof> ;-) ;-)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 06:34