Autor | Zpráva | ||
---|---|---|---|
Grass33 Profil * |
#1 · Zasláno: 2. 5. 2022, 12:40:13
Zdravím,
jsem v JS naprostý začátečník. Řeším tento problém: na webu chci formulář se Selectem, kde si uživatel něco vybere, na základě čeho se pak doplní další políčka ve formuláři. <script> $("body").on('change', '#sel_dodaci_adresa', function() { var selectedValue = $(this).val(); $.ajax({ url: 'dodaci_adresa.php', type: 'POST', data: {option : selectedValue}, success: function(data) { console.log("Data sent!"); $('#jmeno').val(???); $('#prijmeni').val(???); $('#ulice').val(???); alert(selectedValue); } }); }); </script> Testovací alert funguje (do dodaci_adresa.php se předá např. 1), jen nedokážu přenést data (nevím co napsat místo těch otazníků) z dodaci_adresa.php do polí formuláře. V dodaci_adresa.php je něco jako: require_once("config.php"); $query3 = mysqli_query($pripojeni, "SELECT * FROM uzivatele_adresy WHERE id='$_REQUEST['option']'"); while ($res = mysqli_fetch_array($query3)) { echo $res['jmeno']; echo $res['prijmeni']; echo $res['ulice']; } |
||
Kajman Profil |
#2 · Zasláno: 2. 5. 2022, 13:01:51
Pozor, pomocí uvedného php skriptu na serveru může kdokoliv vypsat všechny adresy všech uživatelů. Dokonce i data z jiných tabulek.
Takže 1. ošetřete sql injection, např. díky www.php.net/manual/en/mysqli.prepare.php 2. ošetřete, aby uživatel mohl získat jen svoji adresu 3. pole dat (např. celé $res, pokud nevadí, že tam budou všechny sloupce) vraťte pro jednoduché použíti jako JSON pomocí funkce www.php.net/manual/en/function.json-encode.php a se správným Content-Type 4. v případě úspěchu pak budou předaná data v data['jmeno'] |
||
Grass33 Profil * |
#3 · Zasláno: 2. 5. 2022, 13:21:32
Děkuji za odpověď. Bezpečnost jsem zatím neřešil, jen chci rozeběhnout funčknost :-).
Stále se mi to nějak nedaří, teď mám kód: <script> $("body").on('change', '#sel_dodaci_adresa', function() { var selectedValue = $(this).val(); //make the ajax call $.ajax({ url: 'dodaci_adresa.php', type: 'POST', data: {option : selectedValue}, contentType: "application/json", dataType: 'json', success: function(data) { $('#jmeno').val(data['prijmeni']); $('#prijmeni').val(data['prijmeni']); }, error: alert("nejde to") }); }); </script> Což hodí error alert. A v dodaci_adresa.php <?php require_once("config.php"); $query3 = mysqli_query($pripojeni, "SELECT * FROM uzivatele_adresy WHERE id='$_POST['option']'"); $array = mysqli_fetch_array($query3); echo json_encode($array); ?> |
||
Kajman Profil |
Content-Type na json jste měl nastavit pro odpověd ze serveru, ne pro požadavek na server. Tedy v php skriptu ne v js. Zapněte si v prohlížeči díky F12 vývojářské nástroje. Tam uvidíte asi i detail chyby.
Edit: A to prepare Vám pomůže i k funkčnosti sestaveného stringu s dotazem. Edit2: Osobně bych to ale řešil jinak. Nachystal bych si v php při generování košíku všechny uložené adresy uživatele, předal je stránce jako javascriptové pole nebo je dal jako data atributy k jednotivým optionům a pak si údaje do formuláře vyzobnul jen javascriptem bez dotazu na server. |
||
Časová prodleva: 3 roky
|
0