![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
witam
Jakiś czas temu stworzyłem temat w którym dostałem odpowiedzi na moje pytania, ale został on skasowany i nie pamiętam co tam było. jak zapisać w PHP aby stworzyć tabele z polem w którym by był automatycznie dodawany czas dodania rekordu? |
|
|
![]() |
![]()
Post
#2
|
|
Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Pole w bazie musi mieć ustawione NOT NULL DEFAULT 'to co ma byc tam dodawane'
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje
Czy jest możliwość aby po dodaniu rekordu w zwrocie dostać jego id? np
i żeby w zmiennej wynik znajdował się jego id. Jest mi to potrzebne bo będę chciał połączyć kilka tabeli ze sobą. przynależnością, że tab2 należy do tab2 i będzie posiadało w jakieś tabeli jego id myślałem nad tym http://www.kess.snug.pl/?sid=10&pid=50 bo to pokazuje ostatnio dodany rekord(zgadza się?), ale jeśli się coś zatnie i będzie większy ruch dodawania rekordów to mogę uzyskać czego innego id Może macie jakiś inny pomysł Ten post edytował pala2222 17.04.2010, 20:06:45 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
znalazłem tafunkcje, ale czy ona jest bezpieczna? bo ona pokazuje ostatnio dodany rekord
bo jeżeli sporo osób dodaje rekordów tym, samym czasie i jeśli coś się przytnie lub coś podobnego, to w tedy uzyskam nie swój id |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Uzyskasz zawsze ID ostatniego rekordu wstawionego w bieżącym połączeniu. Uważaj tylko na INESRTy z wieloma wierszami, bo wtedy dostaniesz id pierwszego wstawionego wiersza.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jest możliwość, aby zapisać zapytanie sql przez naku ' przy dodawaniu rekordu, ponieważ mam problem nie związany z php.
"INSERT INTO `sql` (`id`, `nazwa`) VALUES (NULL,'chodzi o tą cześć')" |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Co?
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
ok już wiem w czym problem(chyba)
jak zrobić, aby dla jednej zmiennej było wyłączone Magic_quotes bo nie chce aby do znaku ' było dodawane \ czyli \' bo mam problem bo jak przekazuję zmienną do post to dodaje mi \ przed ' a ja tego nie chce. to co mam zrobić? Ten post edytował pala2222 19.04.2010, 19:35:42 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Kod if(get_magic_quotes_gpc()) {
$zmienna = stripslashes($_POST['zmienna']); } else { $zmienna = $_POST['zmienna']; } $zmienna = mysql_real_escape_string($zmienna); |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
wielkie dzięki
to co podałeś to całkowicie nie działa zadziałało jak przez przypadek usunąłem tą linijkę to jest coś ważnego? byś mógł dodać jakiś krotki komentarz do warunku tego ifa co on robi Ten post edytował pala2222 19.04.2010, 20:42:09 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
get_magic_quotes_gpc() sprawdza, czy magic_quotes są włączone. Jeśli tak, to stripslashes() usuwane są wszystkie dodane przez nie \.
Na koniec mysql_real_escape_string poprawnie zabezpiecza wszelkie znaki specjalne. I teraz pytani: co takiego chcesz zrobić, że mysql_real_escape_string Ci przeszkadza? Jak wygląda Twoje zapytanie i co do niego chcesz wstawić? Ten post edytował Mchl 19.04.2010, 20:33:50 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
przesyłam przez post coś takiego
i to wklejam
no i i bez tej ostatniej linijki działa, a z dodaje \ |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Bardzo niedobry pomysł z punktu widzenia bezpieczeństwa. Powinieneś przesłać te wartości albo jako osobne zmienne, albo w tablicy, i w samym PHP odpowiednio je obrobić.
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
bo ja to wysyłam przez curl w c++
i zależy mi żeby to szło jak najszybciej, mam tam takich zmiennych z 40 i gdybym każde z osobna tak wysyłał to zajmie to dużo więcej czasu w porównaniu z tym jak to umieśćże w jednej zmiennej POST i potem to ewentualnie podzielę. masz może jakiś pomysł, żeby to jakoś jakoś zabezpieczyć bez przesyłania tego wszystkiego z osobna? tam nie będzie jakiś tajnych danych ale nie chce, zęby ktoś narobił mi szkód |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
A dlaczego miałoby być wolniej? Jedna "duża" zmienna, czy 40 "małych" i tak wszystkie idą w ramach jednego żądania...
Jak już chcesz w jednej, wysyłaj samą listę przedzieloną przecinkami. Kod //$_POST['zmienna'] = "kotek,167,4534, bla"
if(get_magic_quotes_gpc()) { $zmienna = stripslashes($_POST['zmienna']); } else { $zmienna = $_POST['zmienna']; } $vars = explode(',',$zmienna); foreach($vars AS $key => $value) { $vars['$key'] = "'".mysql_real_escape_string($value)."'"; } $values = implode(',',$vars); $sql = "INSERT INTO `sql` (`nazwa`,`numer`,`kod`,`liczba`) VALUES ($values)"; |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
nie za bardzo to działa bo nie dodaje tych znaków prim
Ten post edytował pala2222 20.04.2010, 16:08:23 |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Masz ustawione wyświetlanie błędów?
|
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
tak testuje na cba żeby u siebie czegoś nie skopać przez przypadek w bazie danych
ten twój kod nie wstawia znaków prim, znaczy wstawia ale w słowie bla i je podwaja czyli jest bla,'bla' Ten post edytował pala2222 20.04.2010, 16:13:56 |
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Zgadza się. Mój błąd:
Kod foreach($vars AS $key => $value) {
$vars[$key] = "'".mysql_real_escape_string($value)."'"; } |
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
wielkie dzięki.
A byś mógł tak krótko napisać dlaczego tak sięrobi i jakie mogą być przesto kłopoty? ale przecież to właściwie nic nie zmienia? jak to działa w sposób bezpieczeństwa(bo programistyczne wiem jak działa ten kod) mozęsz napisać na co jeszcze uważać? z takich oczywistych rzeczy, zęby nie było żadnej wtopy |
|
|
![]()
Post
#24
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Wszystko przez to:
http://en.wikipedia.org/wiki/SQL_injection magic_quotes miał być "cudownym" sposobem na zabezpieczenie się przed takimi atakami, ale z natury swojej takim być nie może (bo każdy system bazodanowy ma swoje własne znaki specjalne). Stąd też w nowszych wersjach PHP odchodzi się od stosowania magic_quotes. Nadal jednak na na wielu serwerach jest on włączony, stąd konieczność wykrywania i 'odczyniania' tego co zrobił (a robi tyle, że puszcza addslashes() na wszystkich zmiennych GET,POST,COOKIE i niektórych SERVER i FILES). Jak już mamy zmienną w takiej postaci, w jakiej rzeczywiście wprowadził ją użytkownik, przepuszczamy ją przez właściwą funkcję zabezpieczającą. Dla MySQL jest to mysql_real_escape_string(). |
|
|
![]()
Post
#25
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
co by było lepsze
zrobienie dodatkowych kolumn dla części rekordów, czy umieszczenie danych w jednej dodatkowej kolumnie? podam to na przykładzie: Załóżmy, że moja baza danych zawiera pojazdy i 1/5 z nich to auta, które zawierają dodatkowe dane abs, kolor nadwozia,paliwo,rodzaj nadwozia. i co jest lepiej zrobić? Stworzyć specjalnie da nich 4 kolumny w bazie z tymi wartościami, czy dodać jedną "inne" z której by też korzystały też inne pojazdy. w tej kolumnie by były wpisywane wartości po /. Teraz wyszukiwanie auta o Kolorze czerwonym by było poprzez %czerwony% w kolumnie "inne" wiesz o co mi chodzi? to jest dość bezpieczne i dobre rozwiązanie? |
|
|
![]()
Post
#26
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
To jest rozwiązanie, którego będziesz żałował. Lepiej zrobić listę EAV.
http://explainextended.com/2010/04/02/mult...-vs-not-exists/ |
|
|
![]()
Post
#27
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 3.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
mam w planach szukajkę (IMG:style_emoticons/default/biggrin.gif) by służyła tylko do szukania po tytułach
taką, że jak wypiszę call of duty 2 to najpierw wyskoczy mi call of duty 2 potem wszystkie tytuły zawierające call of duty i na końcu wszystkie z call lub duty (ale tak żeby się nie powtarzało) w cześniej się o to pytałem na forum i napisano mi, żeby zainteresował się FULL TEXT SEARCHING naskrobałem takie coś, ale nic nie wypisuje a rekordy zawierają w kolumnie nazwa rekordy call of duty
Ten post edytował pala2222 24.04.2010, 17:09:40 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 17:37 |