• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Data - wprowadzenie z formularza php do mysql

Object Storage Arubacloud
+1 głos
1,624 wizyt
pytanie zadane 22 czerwca 2016 w PHP przez Zbigniew Andrysiak Bywalec (2,470 p.)

Witam

Poprzez formularz zawarty w php próbuję wstawić datę do bazy danych. Jednak po wpisaniu danych z formularza wszystkie są przesłane z wyjątkiem daty. Powiedzcie co ja robię źle. Poniżej kod

$data = strip_tags($_POST['Data']);
$time = strip_tags($_POST['czas']);
$kraj1 = strip_tags($_POST['Kraj1']);
$wynik1 = strip_tags($_POST['Wynik1']);
$punkty1 = strip_tags($_POST['Pkt1']);
$kraj2 = strip_tags($_POST['Kraj2']);
$wynik2 = strip_tags($_POST['Wynik2']);
 $punkty2 = strip_tags($_POST['Pkt2']);

            {

						$statement = $mysqli->prepare("INSERT INTO 2016euromecze (Data,czas,Kraj1,Wynik1,Pkt1,Kraj2,Wynik2,Pkt2) VALUES (?,?,?,?,?,?,?,?)");
   
						$statement->bind_param('ssssssss',$data,$time,$kraj1,$wynik1,$punkty1,$kraj2,$wynik2,$punkty2);
	
						$statement->execute();
						$statement->close();
						header('Location: admin.php');

 

3 odpowiedzi

0 głosów
odpowiedź 22 czerwca 2016 przez CzikaCarry Szeryf (75,340 p.)
wybrane 22 czerwca 2016 przez Zbigniew Andrysiak
 
Najlepsza
W jakim formacie wysyłasz datę do bazy i jaki typ ma ustawiona kolumna która ma przechowywać datę? Być może w tym leży problem.

PS. Strip_tags jest meh, i tak będzie możliwe SQL injection, code injection, XSS, CSRF. Lepiej użyj innej metody filtrowania danych.
komentarz 22 czerwca 2016 przez Zbigniew Andrysiak Bywalec (2,470 p.)

Format daty YYYY-mm-d z input date.

Baza ma ustawioną kolumnę na date. Czy o to Ci chodziło?

   echo 'data'.'<input type="date" name="data" id="data">'.'<input type="time" name="czas" id="czas">';
    echo '<br><br>';

 

komentarz 22 czerwca 2016 przez CzikaCarry Szeryf (75,340 p.)
Kolumna data służy do przechowywania daty w formacie yyy-mm-dd, a w kolumnie datetime można przechowywać datę i godzinę. Widzę że zaznaczyłeś odpowiedź jako najlepszą, widzę też, że jesteś nowy. Nie napisałeś czy problem wciąż występuje czy nie. Jeśli wciąż występuje spróbuj datę i czas wsadzić do jednej kolumny datetime.

Przycisku najlepsza odpowiedź ludzie zazwyczaj używają na odpowiedzi, która pomogła rozwiązać problem.
0 głosów
odpowiedź 22 czerwca 2016 przez Zbigniew Andrysiak Bywalec (2,470 p.)

No i zaciekawiłeś mnie odpowiedzią. Powiedz mi czy mogę to szybko jakoś naprawić? 

Czy mogę zamienić Strip_tags na coś co będzie bardziej odpowiadało dacie? No a później zabiorę się za kwestię bezpieczeństwa. (dostęp do tej strony mam tylko ja)

komentarz 22 czerwca 2016 przez Comandeer Guru (601,110 p.)

Tak po prawdzie to bazę masz zabezpieczoną przy pomocy prepared statements. Przed XSS powinno Cię częściowo chronić strip_tags (chociaż są lepsze sposoby), CSRF to całkowicie inna klasa ataku, z którą tego typu dane nie maja nic wspólnego, a code injection raczej też się nie przeprowadzi w ten sposób (musiałbyś dane od usera wkładać bezpośrednio jako ścieżkę do require albo przepuszczać przez eval).

komentarz 22 czerwca 2016 przez CzikaCarry Szeryf (75,340 p.)
Tutaj masz blog na którym jest wiele ciekawych wpisów dotyczących webu. Tutaj masz wpisy dotyczące bezpieczeństwa http://lukasz-socha.pl/php/niebezpieczny-kod-spis-tresci/
2
komentarz 22 czerwca 2016 przez Comandeer Guru (601,110 p.)

Hmm… dziwne informacje są na tym blogu.

http://lukasz-socha.pl/php/niebezpieczny-kod-sql-injection/

Na szczęscie istnieje prosty sposób na zabezpieczenie się przed tym atakiem. Wystarczy przed kazdym znakiem specjalnym dodać znak „\”. Do tego celu PDO udostępnia odpowiednie metody.

To nieprawda. Prepared statements nie escape'ują danych, ale rozdzielają zapytanie od samych danych i w takiej formie przesyłają do bazy. Dlatego są najbezpieczniejszym sposobem wykonywania zapytań SQL.

0 głosów
odpowiedź 22 czerwca 2016 przez Zbigniew Andrysiak Bywalec (2,470 p.)

Dobra wracając do pytania. Jak mogę szybko zamienić Strip_tags, żeby formularz wysłał mi datę?

komentarz 22 czerwca 2016 przez CzikaCarry Szeryf (75,340 p.)
To nie jest wina strip_tags. W html input z datą ma id="data", a później przy użyciu post pobierasz zmienną Data. "data" i "Data" to nie to samo. Zamiast $_POST['Data'] daj $_POST['data']
komentarz 22 czerwca 2016 przez Zbigniew Andrysiak Bywalec (2,470 p.)
Dziękuję Ci serdecznie. Że ja czegoś takiego nie zauważyłem. + Ode mnie najlepsza odpowiedź
komentarz 22 czerwca 2016 przez CzikaCarry Szeryf (75,340 p.)
Polecam się na przyszłość :)

Podobne pytania

0 głosów
1 odpowiedź 148 wizyt
pytanie zadane 18 marca 2018 w PHP przez chmod96 Obywatel (1,380 p.)
0 głosów
1 odpowiedź 201 wizyt
pytanie zadane 12 lutego 2020 w PHP przez juske00 Początkujący (370 p.)
0 głosów
0 odpowiedzi 110 wizyt
pytanie zadane 1 października 2019 w SQL, bazy danych przez kamilvvv Początkujący (430 p.)

92,565 zapytań

141,416 odpowiedzi

319,599 komentarzy

61,950 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...