Autor | Zpráva | ||
---|---|---|---|
argonisius Profil * |
#1 · Zasláno: 21. 10. 2009, 15:55:58
Dobrý den, narazil jsem na problém při aktivaci účtu. Používám zde metodu get ke zjištění uživatelského jména a aktivačního klíče. Zjistil jsem, že pokud je uživatelské jméno "Háček", tak $_GET přijme "Háček". Jde nějak nastavit, aby to přijalo normálně?
|
||
Joker Profil |
#2 · Zasláno: 21. 10. 2009, 16:02:13
argonisius:
„$_GET - nepodporuje háčky a čárky?“ Podporuje. Možná bude problém v kódování vstupního formuláře a skriptu, který ho zpracovává. |
||
argonisius Profil * |
#3 · Zasláno: 21. 10. 2009, 16:12:17
Aha... tak to bude kódováním e-mailu... je nějaká jednoduchá cesta, jak určit kódování pro předmět i obsah e-mailu? Tekt bude vždy v cp-1250.
|
||
Alphard Profil |
#4 · Zasláno: 21. 10. 2009, 16:24:36
argonisius:
Navštivte místní FAQ. |
||
argonisius Profil * |
#5 · Zasláno: 21. 10. 2009, 16:25:05
To jsem z toho jelen... Když tu aktivační adresu otevřu v IE, Mozille nebo Opeře, tak to funguje... Jen v Chromu to nefunguje... Možná dělám něco špatně: adresa je takováto: http://localhost/www/hra/Moje%20hra/aktivace.php?username=Háček&validkey=991d9bd0d81712b6f1b8b2d7db6c6074
nenapadá vás, proč to blbne? |
||
argonisius Profil * |
#6 · Zasláno: 21. 10. 2009, 16:26:24
Omlouvám se, právě jsem otevřel ten odkaz v předchozím postu ve Chromu - a hle! Funguje. Pokud ho však "vložím" do adresního řádku, tak to zase nefunguje.
|
||
argonisius Profil * |
#7 · Zasláno: 22. 10. 2009, 13:44:42
Tak... dokáže mi někdo odpovědět na otázku, proč když zadám tuto adresu do google chromu: http://localhost/www/hra/moje_hra/aktivace.php?username=ěščřžýáíéůúúů&validkey=36e5ee00feb151dfe72450f2421c727f , tak se mi z uživatelského jména udělá paskvil, a když ji dám do IE, Mozilly atd tak vše funguje? Ještě, jak jsem zjistil v minulém postu, tak když ten odkaz otevřu na webu (tady na fóru), tak funguje???
|
||
argonisius Profil * |
#8 · Zasláno: 22. 10. 2009, 13:46:15
Aha... tak už nefunguje ani to s "otevřením odkazu" tady na fóru - když ho otevřu, tak mám v adresní řádce místo
http://localhost/www/hra/moje_hra/aktivace.php?username=ěščřžýáíéůúúů&validkey=36e5ee00feb151dfe72450f2421c727f toto: http://localhost/www/hra/moje_hra/aktivace.php?username=%EC%B9%E8%F8%BE%FD%E1%ED%E9%F9%FA%FA%F9&validkey=36e5ee00feb151dfe72450f2421c727f |
||
argonisius Profil * |
#9 · Zasláno: 22. 10. 2009, 13:58:05
Ještě doplním kód, který odesílá aktivační mail s odkazem:
$validkey = md5(uniqid()); $query = sprintf("INSERT INTO users(username,password,email,validkey,validated) VALUES ('%s','%s','%s','$validkey','0');", mysqli_real_escape_string($dbconnect,$username), mysqli_real_escape_string($dbconnect,sha1($password)), mysqli_real_escape_string($dbconnect,$email)); mysqli_query($dbconnect,$query) or die ('Při registraci nastaly potíže.'); $zprava = "Pro aktivaci účtu klikněte na tento odkaz: $path/activace.php?username=$username&validkey=$validkey"; $zprava= Base64_Encode($zprava); $hlavicka = "MIME-Version: 1.0\n"; $hlavicka .= "Content-Type: text/plain; charset=\"windows-1250\"\n"; $hlavicka .= "Content-Transfer-Encoding: base64"; mail ("$email","$game - Aktivace účtu","$zprava","$hlavicka") or die ('Nemohu odeslat aktivační e-mail.'); echo '<span class="oznameni">Děkujeme za registraci. Byl vám zaslán aktivační e-mail.</span>'; a kód aktivačního scriptu: <?php // Kontrola přijetí dat if($_GET) { $username=$_GET['username']; $validkey=$_GET['validkey']; // ověření, zda souhlasí uživatelské jméno a aktivační klíč $query = sprintf("SELECT * FROM users WHERE username = '$username' AND validkey = '$validkey'", mysqli_real_escape_string($dbconnect,$username), mysqli_real_escape_string($dbconnect,$validkey)); $result = mysqli_query($dbconnect,$query) or die ('Nemohu ověřit správnost aktivačních údajů.'); $data = mysqli_fetch_array($result); if(!$data) { echo '<span class="chybova_hlaska">Špatná kombinace uživatelského jména a aktivačního klíče!</span>'; } // Aktivace účtu else { $query = sprintf("UPDATE users SET validated = '1' WHERE username = '$username'", mysqli_real_escape_string($dbconnect,$username)); $result = mysqli_query($dbconnect,$query) or die ('Nemohu aktivovat Váš účet.'); echo '<span class="oznameni">Váš účet byl úspěšně aktivován. Nyní se můžete <a href="prihlaseni.php">přihlásit</a>.</span>'; } } ?> |
||
tiso Profil |
#10 · Zasláno: 22. 10. 2009, 13:59:28
|
||
Kajman_ Profil * |
#11 · Zasláno: 22. 10. 2009, 14:02:58
Slovo "Háček" převeďte pomocí funkce iconv na utf-8 (není-li už rovnou v utf-8), výsledek prožeňte přes funkci rawurlencode a to teprve dejte do adresy odesílané emailem.
V aktivnačním skriptu pak očekávejte proměnnou username v utf-8 - tedy si ji převeďte zpět přes iconv do kódování, se kterým pracujete. |
||
argonisius Profil * |
#12 · Zasláno: 22. 10. 2009, 14:17:50
Díky, funguje to - jen by mě ještě zajímalo - zatím jsem tam tu funkci iconv nezařadil, jestli když to funguje, tak to znamená, že řetězec bude vždy v utf-8, nebo to tak být nemusí - tedy bych to tam měl zařadit.
|
||
Časová prodleva: 15 let
|
0