Przyscisk |
Przyscisk |
4.05.2004, 23:37:34
Post
#1
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 27.02.2004 Ostrzeżenie: (10%) |
Mam dość proste pytanie:
w jaki sposób odwoałć sie do przycisku typu Kod submit w instrukcji Kod if tak aby wiedzieć czy użytkownik kliknął w przycisk czy nie.
Czy można tak? [php:1:702ca33277]<?php <FORM method="POST" name="rejestruj" action="login.php"> Imie: <INPUT TYPE="TEXT" name="imie" align="left" size="10" maxlength="32"> </FORM> "); if ($_POST[imie] = "imie") { echo "on"; } else { echo "off"; } ?>[/php:1:702ca33277] lub [php:1:702ca33277]<?php if ($opcja = $imie) { echo "on"; } else { echo "off"; } ?>[/php:1:702ca33277] Za długo przed kompem i wszystko sie miesza -------------------- Warsztst: Apache 1.3.31 | PHP 4.3.7RC1 | MySQL 4.0.18
Na warsztacie: RU llllllllll 98% |
|
|
4.05.2004, 23:45:10
Post
#2
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 0 Dołączył: 3.05.2003 Skąd: Łódź Ostrzeżenie: (0%) |
W ten sposób chyba najprościej:
[php:1:e635994b34]<?php //Przycisk: echo '<form action="plik.php" method="post"> <input type="submit" name="submit" value="naciśnij mnie" /> </form>'; ?>[/php:1:e635994b34] plik.php: [php:1:e635994b34]<?php if($_POST['submit'] == 'naciśnij mnie') { //przycisk został naciśnięty } else { //nie } ?>[/php:1:e635994b34] -------------------- pozdrawiam bamboos
http://piorun.ds.pg.gda.pl/~ronek/log/jedyne.wma |
|
|
5.05.2004, 08:38:43
Post
#3
|
|
Grupa: Zarejestrowani Postów: 166 Pomógł: 0 Dołączył: 1.04.2004 Skąd: Gdynia Ostrzeżenie: (0%) |
Ja uzywam:
[php:1:e4f3ca6d80] <?php if( isset( $_POST['button'] ) ) { //Nacisniety... } ?> [/php:1:e4f3ca6d80] Z tego co wiem to najpierw powinno sprawdzac sie czy zmienna wogule istnieje, a dopiero pozniej sprawdzac jej zawartosc, a w przypadku przycisku jej zawartosc nas nie obchodzi. |
|
|
13.05.2004, 21:16:17
Post
#4
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 27.02.2004 Ostrzeżenie: (10%) |
Dlugo sie zastanawiałem co w mojej aplikacji nie dziala, a okazuje sie ze wypróbowaniu sposobu Yarecki (który działa i nie mam na celu w jakimkolwiek stopniu tego negowac) u mnie to nie działa.
Okazjue sie ze po nociśnieciu przycisku wyślij, dane w tablicy [php:1:7384000230]<?php $_POST[] ?>[/php:1:7384000230] sa puste. [php:1:7384000230]<?php if( isset( $_POST['wyslij'] ) ) { $DB = new DB; $DB->sql("insert into rejestracja_konto (login, haslo, email) values ('$login', '$key', '$_POST[email]')"); } else { echo "Błąd!!!"; }; ?>[/php:1:7384000230] Dlaczego tak sie dzieje? Moze ktoś ma na to jakiś sposób, prosze o pomoc?[/b] -------------------- Warsztst: Apache 1.3.31 | PHP 4.3.7RC1 | MySQL 4.0.18
Na warsztacie: RU llllllllll 98% |
|
|
13.05.2004, 21:30:02
Post
#5
|
|
Grupa: Zarejestrowani Postów: 166 Pomógł: 0 Dołączył: 1.04.2004 Skąd: Gdynia Ostrzeżenie: (0%) |
To działa czy nie bo trochę dziwnie to napisales :-)
Spróbuj tak: [php:1:294b1a3bf4] <?php $DB->sql("insert into rejestracja_konto(login, haslo, email) values('$login', '$key', '".$_POST['email']."')"); ?> [/php:1:294b1a3bf4] |
|
|
13.05.2004, 21:30:11
Post
#6
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 25.11.2003 Ostrzeżenie: (0%) |
A jak wyglada reszta formularza, moze to błąd w zapisie, przeanalizuj czy masz dobrze powstawiane "" i ' ', bo nie wiem gdzie te dane mogłyby się zagubić po wysłaniu, albo prześlij reszte formularza, tak jak wygląda i co go obsługuje...
|
|
|
13.05.2004, 21:55:49
Post
#7
|
|
Grupa: Postów: 0 Pomógł: Dołączył: -- Ostrzeżenie: (0%) |
Cytat To działa czy nie bo trochę dziwnie to napisales :-)
Spróbuj tak: [php:1:f59045bf89] <?php $DB->sql("insert into rejestracja_konto(login, haslo, email) values('$login', '$key', '".$_POST['email']."')"); ?> [/php:1:f59045bf89] Napisałem ze sa puste wiec logiczne ze nie działa, powinienem to wprost napisać. Reszta danych jest wyświetlana bo mam coś w rodzaju przypomnienia podanych podczas rejestracji danych, oto kod: [php:1:f59045bf89]<?php echo " <br>Zostałeś zarejestrowany<br><br> Twoje dane:<br><br> Login: ".$_POST[login]."<br> Hasło: ".$_POST[haslo]."<br><br> ?>[/php:1:f59045bf89] Jak widac jest tu zmienna Kod $_POST[login]
i jest wyswietlana, wszystko działa do momętu wciśnięcia przycisku Kod wyślij
Do bazy danych sostaja wysłane puste wartości. Tak to sie dzieje, troche to dziwne, co o tym sądzicie? Kod jest wpożadku, wszystko działa, debuger nic nie wykrywa. |
|
|
13.05.2004, 22:15:36
Post
#8
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 4.02.2003 Ostrzeżenie: (0%) |
Cytat To działa czy nie bo trochę dziwnie to napisales :-)
Spróbuj tak: [php:1:eb4e497394] <?php $DB->sql("insert into rejestracja_konto(login, haslo, email) values('$login', '$key', '".$_POST['email']."')"); ?> [/php:1:eb4e497394] Dajcie mi adres serwisu ktory uzywa ten kod? Proponuje lektur o SQL injections oraz zaprzestanie podawania bezposrednio do SQL danych odebranych z przegladarki! Pozdrawiam evo |
|
|
13.05.2004, 22:24:22
Post
#9
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 27.02.2004 Ostrzeżenie: (10%) |
Sluchaj evo mamy tu problem i myślimy nad rozwiazaniem, laskawie powstrzymaj sie od komentarzy typu
Dajcie mi adres serwisu ktory uzywa ten kod? Przeczytałes wogóle ci wczesniej napisałem? Polecam uwżniejsze czytanie. P.S Przepraszam mam zly chumro. -------------------- Warsztst: Apache 1.3.31 | PHP 4.3.7RC1 | MySQL 4.0.18
Na warsztacie: RU llllllllll 98% |
|
|
13.05.2004, 22:54:29
Post
#10
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 4.02.2003 Ostrzeżenie: (0%) |
nie czytalem bo moja wypowiedz tyczy sie do tego kodu ktory przytoczylem w cytacie
...i nie uwazam by moj komentarz o SQL Injections byl az taki tu zbedny bo wy budujecie serwisy ktore ktos wam rozwali i wy bedziecie sie glowic jak to moglo sie stac wiec lepiej od poczatku uczyc sie pisac bezpiecznie! Pozdrawaim evo |
|
|
13.05.2004, 22:57:27
Post
#11
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 2.02.2004 Ostrzeżenie: (0%) |
@neo.priv
1. Daj cały formularz. 2. Czy w ogóle udaje się jakiekolwiek zapytanie do bazy danych? Może jest coś nie tak z podpięciem do bazy? @evo Cytat Dajcie mi adres serwisu ktory uzywa ten kod?
Proponuje lektur o SQL injections oraz zaprzestanie podawania bezposrednio do SQL danych odebranych z przegladarki! Hmm... to powiedzmy podaj przykład sql injection dla tego zapytania, biorąc pod uwagę oczywiście, że na tym serwerze jest ustawione magic_quotes_gpc :?: |
|
|
13.05.2004, 23:01:46
Post
#12
|
|
Administrator serwera Grupa: Developerzy Postów: 521 Pomógł: 13 Dołączył: 2.04.2004 Skąd: 52°24' N 16°56' E Ostrzeżenie: (0%) |
Sprawdz czy serwer ma wlaczone register_globals na on probujesz sie odwolac z globali odwolac a jesli one sa wylaczone to nie uda ci sie to
-------------------- Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..." Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL" |
|
|
13.05.2004, 23:08:29
Post
#13
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 27.02.2004 Ostrzeżenie: (10%) |
Tak do pozostałych tablel wszystko jest dodawane bez problemu, podejżewam ze przyczyna tkiw w przycisku "wyślij"
Oto kod rejestracja: [php:1:b92b75b639]<?php $arrLocale = array( "pl_PL", "polish_pol" ); setlocale( LC_ALL, $arrLocale); require_once('timer.php'); require_once('lib3.php'); echo " <body bgcolor="#ffffff" topmargin="0" leftmargin="0"> <div align="center"> <!--LOGO--> <table border="0" width="600" cellspacing="0" cellpadding="0"> <tr> <td width="100%"> <p><img border="0" src="../no.gif" width="600" height="60"></td> </tr> </table> <!--NAPIS--> <table border="0" width="600" cellspacing="0" cellpadding="0"> <tr> <td width="100%" bgcolor="#FFCC00"><b><font face="Verdana" size="2" color="#000000">Zakładanie konta</font></b></td> </tr> </table> <br> <!--TABELKA--> <form method="post" action="pokarz_rejestracja.php" name="rejestracja"> <table align="center" border="0" width="300" cellspacing="3" cellpadding="3"> <tr align="left"> <td><br><b>Użytkownik</b></td> </tr> <tr align="left"> <td width="120"> <font face="Verdana" size="2">Login:</font></td> <td> <input type="text" name="login" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">Hasło:</font></td> <td> <input type="password" name="haslo" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">Potwierdzenie:</font></td> <td> <input type="password" name="potwierdzenie" size="15"></td> </tr> </table> <!--TABELKA 2--> <table align="center" border="0" width="300" cellspacing="3" cellpadding="3"> <tr align="left"> <td><br><b>Dane osobowe</b><br><br></td> </tr> <tr align="left"> <td width="120"> <font face="Verdana" size="2">Imię</font></td> <td> <input type="text" name="imie" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">Nazwisko</font></td> <td> <input type="text" name="nazwisko" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">Adres</font></td> <td> <input type="text" name="ul" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">nr. domu</font></td> <td> <input type="nrdomu" name="nrdomu" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">nr. mieszkania</font></td> <td> <input type="text" name="nrmieszkania" size="15"></td> </tr> <tr align="left"> <td > <font face="Verdana" size="2">Kod pocztowy</font></td> <td> <input type="text" maxlength="2" name="kod1" size="1">-<input type="text" maxlength="3" name="kod2" size="1"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">Województwo</font></td> <td> <input type="text" name="wojewodztwo" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">Miejscowość</font></td> <td> <input type="text" name="miejscowosc" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">NIP</font></td> <td> <input type="text" name="nip" size="23"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">Pesel</font></td> <td> <input type="text" name="pesel" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">e-mail</font></td> <td> <input type="text" name="email" size="23"></td> </tr> </table> <br> <!--TABELKA 3--> Masz firme? tak <input type="checkbox" name="check" value="on" onClick="document.rejestracja.submit()"".($_POST['check'] == "on" ? " checked" : "")."><br>"; if ($_POST[check]=="on") { echo " <table align="center" border="0" width="300" cellspacing="3" cellpadding="3"> <tr align="left"> <td><br><b>Firma</b><br><br></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">Nazwa</font> <input type="text" name="nazwa" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">Adres <input type="text" name="adres" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">nr. domu</font> <input type="text" name="nrdomu1" size="5"> <font face="Verdana" size="2">nr. mieszkania</font> <input type="text" name="nrmieszkania1" size="15"></td> </tr> <tr align="left"> <td > <font face="Verdana" size="2">Kod pocztowy</font> <input type="text" maxlength="2" name="kod3" size="1">-<input type="text" maxlength="3" name="kod4" size="1"></td> </tr> <tr> <td> <font face="Verdana" size="2">Województwo</font> <input type="text" name="wojewodztwo1" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">Miejscowość</font> <input type="text" name="miejscowosc1" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">Regon</font> <input type="text" name="regon" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">e-mail</font> <input type="text" name="email2" size="15"></td> </tr> <tr align="left"> <td> <font face="Verdana" size="2">tel</font> <input type="text" name="tel" size="15"></td> </tr> </table> ";}; echo " <p align="center"><input type="reset" value="Wyczyść" name="B1" style="font-family: Verdana; font-size: 8pt"> <input type="submit" value="Załóż konto" name="B2" style="font-family: Verdana; font-size: 8pt"></p> </form> <p align="center"> </p> </div> </form> </body>"; ?>[/php:1:b92b75b639] Kod pokarz_rejestracja: [php:1:b92b75b639]<?php require_once('lib3.php'); /* * Uruchamiam wadlitor */ //$check = new Validator (); /* Sprawdzenie poprawności wpisanych danych */ //if (!$check->is_email($_POST[email])) { echo "Nieprawidłowy e-mailn";}; //if (!$check->strip_letters($_POST[login])) { echo "Nieprawidłowy loginn";}; echo " <br>Zostałeś zarejestrowany<br><br> Twoje dane:<br><br> Login: ".$_POST[login]."<br> Hasło: ".$_POST[haslo]."<br><br> Imię: ".$_POST[imie]."<br> Nazwisko: ".$_POST[nazwisko]."<br> Adres: ".$_POST[ul]." ".$_POST[nrdomu]." ".$_POST[numermieszkania]."<br> Kod pocztowy: ".$_POST[kod1]."-".$_POST[kod2]."<br> Wojewodztwo: ".$_POST[wojewodztwo]."<br> Miejscowość: ".$_POST[miejscowosc]."<br> NIP: ".$_POST[nip]."<br> Pesel: ".$_POST[pesel]."<br> e-mail: ".$_POST[email]."<br><br>"; if ($_POST[check]=="on") { echo " Nazwa: ".$_POST[nazwa]."<br> Adres: ".$_POST[ul1]." ".$_POST[nrdomu1]." ".$_POST[numermieszkania1]."<br> Kod pocztowy: ".$_POST[kod3]."-".$_POST[kod4]."<br> Wojewodztwo: ".$_POST[wojewodztwo1]."<br> Miejscowość: ".$_POST[miejscowosc1]."<br> Regon: ".$_POST[rgon]."<br> e-mail: ".$_POST[email2]."<br><br> telefon: ".$_POST[tel]."<br>"; }; echo "<form method="post" action="pokarz_rejestracja.php"> <input type="submit" name="wstecz" value="wstecz" onClick=history.back()> <input type="submit" name="wyslij" value="wyślij"> "; $login = $_POST[login]; $key = md5 ($_POST[haslo]); if( isset( $_POST['wyslij'] ) ) { $DB = new DB; $DB->sql("insert into rejestracja_konto (login, haslo, email) values ('$login', '$key', '$_POST[email]')"); $DB->sql("insert into rejestracja_osobiste (imie, nazwisko, ul, nr_domu, nr_mieszkania, kod_pocztowy, miejscowosc, wojewodztwo, NIP, pesel) values ('$_POST[imie]', '$_POST[nazwisko]', '$_POST[ul]', '$_POST[nrdomu]', '$_POST[nrmieszkania]', '$_POST[kod1]-$_POST[kod2]', '$_POST[miejscowosc]', '$_POST[wojewodztwo]', '$_POST[nip]', '$_POST[pesel]')"); $DB->sql("insert into rejestracja_firmy (nazwa, regon, email, tel, ul, nr_domu, nr_mieszkania, kod_pocztowy, wojewodztwo,miejscowosc) values ('$_POST[nazwa]', '$_POST[regon]', '$_POST[email2]', '$_POST[tel]', '$_POST[ul1]', '$_POST[nrdomu1]', '$_POST[nrmieszkania1]', '$_POST[kod3]-$_POST[kod4]', '$_POST[miejscowosc1]', '$_POST[wojewodztwo1]')"); } else { echo "Błąd!!!<br> $login, $key"; }; ?>[/php:1:b92b75b639] I kod klasy obslugujacej polaczenie: [php:1:b92b75b639]<?php setlocale (LC_ALL,"pl_PL"); class DB { var $link; var $sql; function DB() { $this->link = mysql_connect('serwer', 'login', 'haslo') or die('Nie można się połączyć: <br>' . mysql_error()); print ('Połączenie nawiązane<br>'); if (mysql_select_db('baza')) { echo "Wybrano baze:<br>"; } else { echo "Bląd wyboru bazy<br>"; }; } function sql($sql) { mysql_query($sql, $this->link); } function close() { mysql_close($this->link); } }; ?>[/php:1:b92b75b639] To wszystko co napisałem, nic iecej nie mam. -------------------- Warsztst: Apache 1.3.31 | PHP 4.3.7RC1 | MySQL 4.0.18
Na warsztacie: RU llllllllll 98% |
|
|
13.05.2004, 23:08:37
Post
#14
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 4.02.2003 Ostrzeżenie: (0%) |
Cytat Hmm... to powiedzmy podaj przykład sql injection dla tego zapytania, biorąc pod uwagę oczywiście, że na tym serwerze jest ustawione magic_quotes_gpc :?:
przykladow jest tyle ile jestes w stanie wymyslec Zaczynajac od banalnych kasowan tabelek a konczac na dodaniu usera ktorzy moga sie laczyc z baza z innych hostow! Wiec nie licz na magic_quotes_gpc bo jest wiele zapytan w ktorych mozna sie obejesc bez ' " czy Pozdrawiam evo |
|
|
13.05.2004, 23:11:53
Post
#15
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 2.02.2004 Ostrzeżenie: (0%) |
@Zbłąkany
Ale on się odwołuje przez tablicę: $_POST[imie], więc register_globals może być off. @evo Cytat przykladow jest tyle ile jestes w stanie wymyslec
To podaj choć jeden :wink: On ujał zmienną z POST w zapytaniu w apostrofy, więc wszystko co wrzucisz do tej zmiennej będzie traktowane jako łańcuch tekstowy, a że nie możesz użyć ' ani ", to nigdy z tego łańcucha nie wyjdziesz i nie będziesz mógł wstrzyknąć nic do zapytania SQL. |
|
|
13.05.2004, 23:16:56
Post
#16
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 27.02.2004 Ostrzeżenie: (10%) |
Tak mam rejestr globals off, w taki wypadku jak mam sie inaczej odwolac?
Dziwne pokazuje dane wpisane do formularza podczas w pliku pokarz_formularz.php a zapisujac je do bazy danych nie widzi $_POST[login], $_POST[haslo]. Mam tylko puste pola w baize danych. -------------------- Warsztst: Apache 1.3.31 | PHP 4.3.7RC1 | MySQL 4.0.18
Na warsztacie: RU llllllllll 98% |
|
|
13.05.2004, 23:25:37
Post
#17
|
|
Administrator serwera Grupa: Developerzy Postów: 521 Pomógł: 13 Dołączył: 2.04.2004 Skąd: 52°24' N 16°56' E Ostrzeżenie: (0%) |
Sprobuj wlaczyc register globals jesli nie pomoze ja bym sie odwolywal do zmienych $_POST[imie] inaczej sprobuj dokleic index tablicy np w taki sposob $_POST['imie'] ale przed tym czym zaczniesz mieszac w kodzie sprawdz te globale
-------------------- Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..." Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL" |
|
|
13.05.2004, 23:28:08
Post
#18
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 0 Dołączył: 27.02.2004 Ostrzeżenie: (10%) |
register_globals = Off
tak jest off, dobra zoczacze czy zadziała twoja rada Zbłąkany -------------------- Warsztst: Apache 1.3.31 | PHP 4.3.7RC1 | MySQL 4.0.18
Na warsztacie: RU llllllllll 98% |
|
|
13.05.2004, 23:30:16
Post
#19
|
|
Administrator serwera Grupa: Developerzy Postów: 521 Pomógł: 13 Dołączył: 2.04.2004 Skąd: 52°24' N 16°56' E Ostrzeżenie: (0%) |
Z reszta w manualu jest napisane ze $_POST to tablica super globalna 8)
-------------------- Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..." Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL" |
|
|
13.05.2004, 23:31:51
Post
#20
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 2.02.2004 Ostrzeżenie: (0%) |
Zbłakany nie siej fermentu $_POST jest zawsze globalna, register_globals nie ma na to żadnego wpływu. Poczytaj sobie tutaj
Oczywiście lepiej jest pisać $_POST['imie'] niż $_POST[imie], ale w tej sytuacji i tak i tak zadziała tak samo. Więc zupełnie nie tu błąd. Aha.. i tak przy okazji to pisze się pokaż, a nie pokarz (to do neo.priv) |
|
|
Wersja Lo-Fi | Aktualny czas: 24.05.2024 - 10:09 |