| | |
| Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
Autor | Správa |
---|
Registrovaný: 02.10.10 Prihlásený: 20.04.15 Príspevky: 65 Témy: 30 |
Dobrý deň, dúfam že som nezaradil tento príspevok do nesprávnej témy, ale mám problém s údajmi v databáze MySQL. Ide totiž o to, že ak zadám vo svojom formulári (HTML) údaje, uložia sa mi do databázy v tabuľke, ale bez diakritiky, vlastne so zvláštnymi znakmi. Napríklad, ak zadám meno Anežka - v phpMyAdmin sa zobrazí: Anežka. Chyba bude pravdepodobne v skripte PHP, lenže skúšal som všetky možné varianty a nič nefunguje. Databázu aj tabuľky mám nastavené na kódovanie UTF-8_general_ciPHP skript: Kód: <?php $con=mysqli_connect("localhost","root","","sxt"); // Pripojenie - kontrola
mysql_query("SET CHARACTER SET 'utf-8'"); mysql_query("SET NAMES utf-8");
if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); }
$meno = $_POST['meno']; $priezvisko = $_POST['priezvisko']; ... kódovanie stránky v HTML: Kód: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Všade v phpMyAdmin mám nastavené kódovanie na UTF-8 (UTF-8_general_ci) Ak by mal niekto nápad ako by som to mohol vyriešiť, budem vďačný. Vďaka
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 22.04.2014 15:33 | |
|
A keď to z db vytiahneš a zobrazíš na stránke, tak je to správne? Ak áno, tak je všetko v poriadku. Phpmyadmin to len číta v zlom kódovaní. Aby si to overil, môžeš prehliadaču vnútiť zobrazenie stránky v UTF-8 (phpmyadmin to teraz asi zobrazuje v ISO-8859-1) V chrome to máš hore v možnostiach -> tools -> encoding (nástroje->kódovanie)
Ďalšia možnosť je, že databáza je v poriadku, ale nemáš súbor, kde to zobrazuješ, uložený v kódovaní utf-8. Html tag nestačí, musíš ho aj uložiť ako utf-8. To vie každý normálny editor textu.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 02.10.10 Prihlásený: 20.04.15 Príspevky: 65 Témy: 30 | Napísal autor témy Alastor: 22.04.2014 15:56 | |
|
Skúsil som zobraziť údaje z databázy na stránke a ukazuje mi otázniky namiesto znakov s diakritikou. Napr. toto: ���??? Ak po odoslaní údajov z formulára použijem v tom istom PHP skripte výpis odoslaných údajov cez: $_POST['priezvisko']; tak diakritika sa zobrazí správne, ale v databáze phpMyAdmin už nie, ani ked vytvorím stránku pre výpis údajov z databázy. Skúsim ešte raz skontrolovať kodovanie globane v databaze, aj pre tabuľky. Nemyslim ale ze mam v tom chybu, všade mám UTF-8_general_ci
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 22.04.2014 16:12 | |
|
Pozri sa do phpmyadmin s tým vynuteným kódovaním v prehliadači. Zobrazí to správne? (Malo by podľa toho Anežka. To by znamenalo, že dáta sú tam vporiadku, len sa zle zobrazujú.)
A len hádam, ale mohlo by mať vplyv aj to, že používaš zastaralé funkcie, ktoré sa už dosť dlho používať nemajú a máš nejakú novšiu verziu databáze. Aj keď by to žiadny vplyv mať nemalo, určite používaj radšej mysqli, alebo pdo.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 02.10.10 Prihlásený: 20.04.15 Príspevky: 65 Témy: 30 | Napísal autor témy Alastor: 22.04.2014 16:42 | |
|
Mám to nastavené v Mozille cez kodovanie - Unicode a napriek tomu tá istá chyba. Skúsim iné kódovanie, nejako sa s tym pohrať..
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 22.04.2014 17:52 | |
|
PhpMyAdmin to zobrazí správne, problém sú (ako vždy pri tejto otázke), nesprávne uložené dáta. To "SET NAMES" tam bolo vždy? Ak nie, tak sú niektoré údaje zakódované do UTF-8 dva krát.
|
|
Registrovaný: 02.10.10 Prihlásený: 20.04.15 Príspevky: 65 Témy: 30 | Napísal autor témy Alastor: 22.04.2014 21:10 | |
|
Už to mám, chyba bola v skripte, resp. upravou skriptu mi to už funguje. Kód: <?php $con=mysqli_connect("localhost","root","","sxt"); // Pripojenie - kontrola
mysqli_query("SET NAMES utf8");
if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); }
mysqli_query($con, "SET NAMES utf8");
$meno = $_POST['meno']; $priezvisko = $_POST['priezvisko']; $adresa = $_POST['adresa']; $email = $_POST['email']; $tovar = $_POST['tovar']; $platba = $_POST['platba']; $dodanie = $_POST['dodanie']; $platforma = $_POST['platforma']; $rezervovat = $_POST['rezervovat']; $popis = $_POST['popis']; $podmienky = $_POST['podmienky'];
$sql="INSERT INTO objednavky (meno, priezvisko, adresa, email, tovar, platba, dodanie, platforma, rezervovat, popis) VALUES ('$meno', '$priezvisko', '$adresa', '$email','$tovar','$platba','$dodanie','$platforma','$rezervovat', '$popis')";
if (!mysqli_query($con,$sql)) { die('Chyba: ' . mysqli_error($con)); } echo "Vaša objednávka bola úspešne odoslaná";
?> Ten skript: Kód: mysqli_query($con, "SET NAMES utf8"); som vložil pod error hlášku
|
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | Napísal killer: 22.04.2014 22:03 | |
|
Ale fuj, takéto neošetrené vstupy ukladať do databázy!? Zlý nápad! Keď už tam máš mysqli, naštuduj si niečo aspoň o mysqli->bind_param
_________________ always is always wrong |
|
Registrovaný: 02.10.10 Prihlásený: 20.04.15 Príspevky: 65 Témy: 30 | Napísal autor témy Alastor: 24.04.2014 20:58 | |
|
Už je to zabezpečené proti prázdnemu odoslaniu hodnôt z formulára do DB
|
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | Napísal killer: 24.04.2014 22:44 | |
|
Perfektné, akurát že prázdny formulár je ešte to najmenšie zlo, čo ťa môže pri takomto riskantnom kóde stretnúť.
_________________ always is always wrong |
|
Registrovaný: 02.10.10 Prihlásený: 20.04.15 Príspevky: 65 Témy: 30 | Napísal autor témy Alastor: 25.04.2014 18:10 | |
|
Bezpečnosť budem študovať po mature ked bbudem mať čas, a ak budem vedieť lepšie programovať teraz som len začiatočník, tzv. light programator ...teda nie som programator ale rád by som v tom pokračoval do budúcnosti, ak sa bude dariť Teraz len skladám už existujúce skripty, stiahnute z netu. Priznám sa
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 25.04.2014 22:31 | |
|
To je nahovno postup, na bezpecnost musis mysliet v prvom rade, existujuci skript sa plata tazsie. Ale vsak to je tvoja vec.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 12 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|