Hezký den,
s přechodem na nový webhosting se objevil zajímavý problém s češtinou ve formuláři diskusního fóra. A to sice, když použiji v některém poli formuláře diakritiku, tak se zpráva vůbec neodešle do databáze (resp odešle se prázdná). Když diakritiku nepoužiji, zpráva se odešle naprosto v pořádku. To platí jak o textu zprávy tak o jménu přispěvatele. Kódování používám na stránce i v databázi CP1250. Vím, že to je splácanina, ale jsem amatér a dříve mi to fungovalo. V čem může být prosím problém? Děkuji.
Formulář:
<form method="post" action="<?php echo $phpself; ?>" name="formular">
<input type="hidden" name="action" value="<?php echo $action; ?>" />
<?php echo $frmappend.$nl; ?>
<table border="0">
<input type="hidden" name="name" size="50"<?php if($config['gbook']['name_max'] != '') echo ' maxlength="'.$config['gbook']['name_max'].'"'; ?> value="<?php echo whatPrint($name,'prezdivka',''); //if($_SESSION['name'] != '') echo '" disabled="disabled'; ?>" />
<tr class="left">
<td><textarea name="message" cols="45" rows="4" onkeypress="javascript:count(<?php echo $pocetznaku; ?>);" onkeyup="javascript:count(<?php echo $pocetznaku; ?>);"><?php echo $message; ?></textarea><br /></td>
</tr>
<?php if($config["gbook"]["use_check"] == true && !$loggeduser){ //Obrázek s eísly ?>
<?php } ?>
<tr>
<td class="center">
<?php echo vypisSmajly($t_smajly,$g_smajly); ?>
</td>
</tr>
<td class="center">
<a href="javascript:replace('b');" title="Formátovací značky pro tučný text" class="gbsmall" name="b">TUČNĚ</a> |
<a href="javascript:replace('i');" title="Formátovací značky pro kurzívu" class="gbsmall" name="i">KURZÍVA</a> |
<a href="javascript:replace('u');" title="Formátovací značky pro podtržený text" class="gbsmall" name="u">PODTRŽENÉ</a>
<div style="font-size: 11px;">text napište mezi tagy v hranatých závorkách</div>
</td> <tr>
<td class="center">
<input type="submit" value=" Odeslat " onclick="setCookie('<?php echo $config["gbook"]["cookie_expire"]; ?>');" />
<input type="reset" value="Vymazat" />
<input type="button" onclick="javascript:location.reload();" value=" Obnovit " />
</td>
</tr>
</table>
</form>
Zpracování formuláře:
<?php
switch ($_POST['action']){
case 'edit': //Úprava příspěvku
if($loggeduser){ //Ověří uživatele při úpravě příspěvku
if(is_numeric($_POST['id'])){
$mess->GetOne($_POST['id']); //Načte upravovaný příspěvek z databáze
$page = $_POST['page'];
$q = $_POST['q'];
$action = 'update" />'.$nl.'<input type="hidden" name="id" value="'.$_POST['id'];
$add = 1; //Zobrazí formulář z vyplněnými daty
$name = $mess->name;
$mail = $mess->mail;
$web = $mess->web;
$message = unCensore($mess->message);
} else {
echo '<h2 class="false">Nešlo upravit příspěvek</h2>Nejsi hacker?'.$nl;
break;
}
}
break;
case 'delete': //Vymazání příspěvku
if($loggeduser){
if($mess->Delete($_POST['id'])){
echo '<h2 class="true">Příspěvek byl vymazán.</h2>'.$nl;
} else {
echo '<h2 class="false">Příspěvek nebyl vymazán!</h2>'.$nl;
}
}
break;
case 'insert': //Přidání příspěvku
$mess->name = trimSlash($_POST['name']); //Získání údajů
$mess->mail = trimSlash($_POST['mail']);
$mess->web = trimSlash($_POST['web']);
$mess->message = $_POST['message'];
$exist = $mess->Get(0,$show,$mess->name);
if($mess->message != '' && $mess->name != ''){ //Jsou vyplněny povinné položky
if($loggeduser){ //Je přihlášen uživatel:
if($_SESSION['permission'] != 'Master'){ //Pokud není přihlášen Master, příspěvek se zkrátí :)
//Pokud příspěvek již existuje, znovu se nepřidá
if(in_array(Censore($mess->message,$config['gbook']['message_max_r']),mysql_fetch_array($exist))) {echo '<h2 class="false">1Příspěvek již existuje</h2>'.$nl; break;}
$mess->message = Censore($mess->message,$config['gbook']['message_max_r']);
} else {
//Pokud příspěvek již existuje, znovu se nepřidá
if(in_array(CensoreLite($mess->message),mysql_fetch_array($exist))) {echo '<h2 class="false">2Příspěvek již existuje</h2>'.$nl; break;}
$mess->message = CensoreLite($mess->message); //Pouze se zalomí řádky
}
if($mess->Insert()){ //Vložení příspěvku
echo '<h2 class="true">Příspěvek byl přidán.</h2>'.$nl;
} else {
echo '<h2 class="false">Příspěvek nebyl přidán!</h2>'.$nl;
}
} else { //Není přihlášen uživatel:
$user = new User;
@$user->GetOne($mess->name); //Ověření, zda uživatel již neexistuje v databázi
if($user->count == 0){ //Uživatel v databázi neexistuje
//Pokud příspěvek již existuje, znovu se nepřidá
if(in_array(Censore($mess->message,$config['gbook']['message_max']),mysql_fetch_array($exist))) {echo '<h2 class="false">3Příspěvek již existuje</h2>'.$nl; break;}
$mess->message = Censore($mess->message,$config['gbook']['message_max']); //Zkrácení příspěvku
if($mess->Insert()){ //Vložení příspěvku
echo '<h2 class="true">Příspěvek byl přidán.</h2>'.$nl;
} else {
echo '<h2 class="false">Příspěvek nebyl přidán!</h2>'.$nl;
}
} else { //Uživatel v databázi existuje:
echo '<h2 class="false">Uživatel <b>'.$mess->name.'</b> je zaregistrován</h2>'.$nl;
echo '<a href="login.php" title="Přihlásit se" class="gbsmall">Přihlaste se</a> nebo změňte jméno!<br /><br />'.$nl;
$name = '<zadejte jiné jméno>" onclick="javascript:this.value=\'\';';
$show_data = true; //Opět vypsat data do formuláře
}
}
} else { //Nejsou vyplněny povinné položky
echo '<h2 class="false">Nejsou vyplněny povinné položky</h2>'.$nl;
$show_data = true;
}
if($show_data){ //Vypíše data do formuláře
$add = 1;
$mail = $mess->mail;
$web = $mess->web;
$message = $mess->message;
}
break;
case 'update': //Upravení příspěvku
if($loggeduser && (($_SESSION['name'] == $_POST['name']) || $_SESSION['permission'] == 'Master')){
$mess->GetOne(trimSlash($_POST['id']));
$oldmessage = $mess->message; //Získá původní příspěvek
$mess->mail = trimSlash($_POST['mail']);
$mess->web = trimSlash($_POST['web']);
$mess->message = $_POST['message'];
if($_SESSION['permission'] != 'Master'){ //Pokud není přihlášen Master, příspěvek se ocenzuruje :)
$mess->message = Censore($mess->message,$config['gbook']['message_max_r']);
$mess->message .= "<br /><br /><b>Původní zpráva:</b><br /><i>".$oldmessage."</i>";
} else {
$mess->message = CensoreLite($mess->message); //Pouze se zalomí řádky
}
if(is_numeric($_POST['id'])){
if($mess->Update($_POST['id'])){
echo '<h2 class="true">Příspěvek byl upraven.</h2>'.$nl;
} else {
echo '<h2 class="false">Příspěvek nebyl upraven!</h2>'.$nl;
}
} else {
echo '<h2 class="false">Nešlo upravit příspěvek</h2>Nejsi hacker?'.$nl;
break;
}
}
break;
}
?>