![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Przyznam się, że nie wiem jak prawidłowo nazwać temat.. Mam formularz: I teraz próbuje napisać funkcje (staram się pisać w miare umiejętności jak najwięcej funkcji, by trzymać logike oddzielnie od htmla) która sprawdzi czy użytkownik jest zalogowany, jeżeli true to pole input autor powinno być nie aktywne a value jako login, natomiast jeżeli użytkownij jest nie zalogowany, to input aktywny, value puste i oczywiście warunek że pole musi zostać wypełnione. Warunek na wypełnienie pola jest względnie prosty oczywiście
Funkcja jaką napisałem to:
Czyli znowu bez fajerwerków, proste warunki. Jednak problem mam z wyłączeniem pola input 'autor'. Staram się ominąć sytuacje:
Przyznam się, że jestem samoukiem, uczę się głównie z manuala oraz analizuje skrypty pobierane z internetu, jednak nie spotkałem takiego problemu, który zapewne jest banalny. |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Czemu IFem uzalezniasz generowanie calego FORMa? Przeciez interesuje cie TYLKO jedno pole, wiec IFem uzalezniaj generowanie tylko tego jednego pola a nie calego forma...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Mówimy o czymś takim?
Wlaśnie na trafiłem w internecie na pewne rozwiązanie i stworzyłem coś takiego:
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Pierwszy kod: tak, wlasnie o czyms takim mowimy
Drugi kod: chyba coś ci sie pomylilo z js ps: poza tym nie ma sensu robic pola input disabled... poprostu wywal inputa a w to miejsce wyswietlaj poprostu login i juz |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Generalnie działa, jednak gdy pole input jest disabled to nie wysyła jego wartości do POST = nie dodaje rekordu do bazy. Mogę to inaczej obejść?
Wywalić input ok, tlyko problem taki potem mam, pokaże kod:
Jak wysłać autora, jeżeli nie input. Mogę wstawić zmienna, zależną od tej funkcji, tylko nie mam pomysłu i tak jak to rozwiązać. Ten post edytował Forti 13.06.2014, 08:41:39 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No i prawidlowo, ze nie wysyla.
W pierwszym kodzie dane z posta odbierales tak: if(user::isLogged()){ $user = user::getData('', ''); // pobiera informacje o użytkowniku $autor = $user[login]; } else { $autor = $_POST['autor'] } I tej wersji masz sie trzymac. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
No ok, tylko zależy mi na tym, że jak nie zalogowany to musi (ma możliwość) wpisać nick, jak zalogowany to wysyła login. Chce to zrobić najprostszą możliwą drogą, bez 10 warunków itp.
kod funkcji wygląda tak:
To:
zamieniłem na:
Jednak nadal coś nie do końca działa. Spróbuje ustawić może global $autor? chociaż nie wydaje mi się. |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie mozesz wierzyc danym, ktore wysyla uzytkownik... nawet jesli ustawissz pole na disabled czy hidden czy cokolwiek, to user moze je bez problemu spreparowac i ustawic wlasne dane. Dlatego tez, jak user jest zalogowany, to masz jego login brac z php, a nie z tego co wysle ci user w przegladarce.
Zas to ze nie dodaje ci sie teraz do bazy, to pewnie gdzies tracisz te zmienną $autor. Nie wiem gdzie, bo pokazujesz urywki kodu w zaden sposob ze sobą nie powiązane. Jesli $autor = $user[login]; i $autor = $_POST['autor']; generujesz w funkcji autor() to logiczne ze poza tą funkcją zmienna ta nie bedzie widoczna - to są podstawy zasięgu zmiennych w php
Powód edycji: [nospor]:
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Echo input gdy zalogowany wyświetlam tylko dla informacji użytkownika, że faktycznie jest on zalogowany i jaki będzie podpis. Kod na stronie:
Jak inaczej przekazać tą zmienną, czy na prawdę jedynym rozwiązaniem jest wstawianie 'if' z tej funkcji w dokumencie? wówczas działa prawidłowo. |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Jak inaczej przekazać tą zmienną, czy na prawdę jedynym rozwiązaniem jest wstawianie 'if' z tej funkcji w dokumencie? wówczas działa prawidłowo. A co w tym zlego, ze uzyjesz jeszcze raz Ifa?Od biedy pozostaje ci global Od innej biedy funkcja autor() moze zwracac zmienna $autor przez return a potem ty ją bedziesz odbierał |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Teoretycznie nic złego. Praktycznie, to zaraz będę przerabiać swój strukturalny kod, gdyż zaczyna mi się rozrastać, na trochę obiektowy, na tyle na ile potrafię. To z czym mam problem teraz próbuje rozwiązać w celu edukacyjnym, ten przykład będzie wykorzystany może ze 2-3 razy na całej stronie, forum itp., ale np. zaraz będe chciał zrobić wyświetlenie krótkich informacji różnych rzeczach i zacznie mi się robić problem pewnie.
Coś takiego, ale nie działa, wyskakuje błąd, że nie dodało rekordu - nadal nie pobiera $autor. Próbuje z global i return na różne spoboy i nie działa po prostu (IMG:style_emoticons/default/smile.gif)
Ten post edytował Forti 13.06.2014, 09:13:07 |
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No juz pisalem, ze jesli funkcja bedzie zwracac $autor, to musisz wynik tej funkcji odebrac... Odbierasz? Jak nie, to zapraszam do manuala do dzialu funkcje.
edit: z innego kodu widze, ze funkcje autor() wywolujesz na zupelnie innym poziomie niz zapis do bazy, wiec to tak czy siak ci sie nie uda.... Musisz zrobic dodatkowego Ifa przed zapisem i juz. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Już widzę w czym jest problem. Musiałbym przerobić całą strukturę aby to działało tak jak chce. Wyciągnąłem troche nauki z tej lekcji, na przyszłość będę wiedział w czym problem. Zastosuje po prostu if bez zbędnych ceregieli. Dziękuje za pomoc.
|
|
|
![]()
Post
#14
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
$stmt -> bindValue(':dtime', date('Y-m-d H:i:s'), PDO::PARAM_INT);
A data to ci sie poprawnie dodaje? Przeciez wynikiem date() jest tekst a nie liczba (IMG:style_emoticons/default/smile.gif) $stmt -> bindValue(':newsid', $newsid, PDO::PARAM_STR) zas newsid to raczej jest liczba nie tekst (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co pamiętam to tak, ale zmieniłem już w razie co, podziękował. Przy okazji, z tego co pamiętam to funkcja NOW() nie chciała mi działać.. nie pamiętam czemu (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#16
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Przy okazji, z tego co pamiętam to funkcja NOW() nie chciała mi działać.. nie pamiętam czemu Bo pewnie źle jej uzyles (IMG:style_emoticons/default/smile.gif) Pokaz jak robiles, to ci powiemy czemu nie dzialala
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Miałem: $stmt -> bindValue(':dtime', NOW(), PDO::PARAM_INT);
a pewnie powinienem mieć: $data = NOW(); $stmt -> bindValue(':dtime', $data, PDO::PARAM_INT); Chociaż to także chyba nie działało.. już nie pamiętam. Jeszcze pytanie, jak stosować mysql_real_escape_string w PDO, $stmt -> bindValue(':tresc', mysql_real_escape_string($_POST['tresc']), PDO::PARAM_STR); To ma prawo działać? Ten post edytował Forti 13.06.2014, 09:49:49 |
|
|
![]()
Post
#18
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
NOW() to jest funkcja mysql i ma byc ona wywolywana w zapytaniu mysql a nie bindowana w php....
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Gdzieś kiedyś znalazłem przykładowo skrypt (nie pamiętam składni), który robił prostą rzecz - za każdym razem wyświetlał okno którego nie można było zamknąć.
Wystarczyło wpisać go gdzieś w pole input, np. nazwa użytkownika przy rejestracji, i jak kod nie sprawdzał kodu pod tym względem to po prostu strona się sypała.. Albo wstawi mi ktoś div o szerokości 1000px w i zostanie to wyświetlone gdzieś gdzie akurat nie mam stałem szerokości ustalonej - zacznie się sypać. Czy źle kombinuje? Chociaż w sumie klasa bbcode fajnie rozwiązuje problem z html.. a co z javascript? Ten post edytował Forti 13.06.2014, 10:02:43 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 16:15 |