[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: лишнее экранирование ?? одинарных и двойных кавыче
zubasta
Добрый день!
Вопрос такой - уже дня 3 никак не могу решить проблему с правильными отправкой и отображением данных. Одинарные кавычки экранируются, двойные вообще даже в базу не заносяться:
- одинарные кавычки заносятся в базу с \r\n
- после этого при отображении из БД отображаются со слешами (\), то есть ('\)
- все, что заносится в поле textarea после двойной кавычки (") отбрасывается (то есть не заноситься в базу даже)

Вот код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<
html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=sjis">
<
title>Untitled</title>
</
head>
<
body>

<?


//Соединение с БД


$soushin = $_POST['soushin'];
$soushin2 = $_POST['soushin2'];
$reset = $_POST['reset'];
$kakunin = $_POST['kakunin'];
$naosu = $_POST['naosu'];
$koushin = $_POST['koushin'];
$reset2 = $_POST['reset2'];
$modoru = $_POST['modoru'];


$user_id = $_POST['user_id'];
$user_name = $_POST['user_name'];

$user_name = trim($user_name, " .\t.\n.\r.\0.\x0B. ");
$user_age = $_POST['user_age'];
$user_top = $_POST['user_top'];
$user_top = trim($user_top, " .\t.\n.\r.\0.\x0B. ");


$user_mes = $_POST['user_mes'];


if($user_name == NULL){
$error1 = "<font color=\"red\">名前を入力してください</font>";}
if($user_top == NULL){
$error2 = "<font color=\"red\">トピックを入力してください</font>";}
if($user_mes == NULL){
$error3 = "<font color=\"red\">メッセージを入力してください</font>";}
if($user_age == 0){
$error4 = "<font color=\"red\">年齢を入力してください</font>";}




if($kakunin){
//Проверить введенные в форму данные

?>

<form method="post" action="<?= $_SERVER["PHP_SELF"]; ?>" name="keiji">
<
table border="1">
<
tr>
<
td>ID</td>
<
td><?= $user_id ?></td>
</
tr>
<
tr>
<
td>&#21517;前</td>
<td><? if($error1){echo $error1;}else{echo $user_name;} ?></td>
</
tr>
<
tr>
<
td>&#24180;齢</td>
<td>
<? if($error4){echo $error4;}else{echo $user_age;} ?>
</td>
</
tr>
<
tr>
<
td>&#12486;ーマ</td>
<td><? if($error2){echo $error2;}else{echo $user_top;} ?></td>
</
tr>
<
tr>
<
td>&#12513;ッセージ</td>
<td><? if($error3){echo $error3;}else{echo nl2br($user_mes);} ?></td>
</
tr>
</
table>

<
input type="hidden" name="user_id" value="<?= $user_id ?>">
<
input type="hidden" name="user_name" value="<?= $user_name ?>">
<
input type="hidden" name="user_age" value="<?= $user_age ?>">
<
input type="hidden" name="user_top" value="<?= $user_top ?>">
<
input type="hidden" name="user_mes" value="<?= $user_mes ?>">
<
input type="submit" name="soushin" value="送信">
<
input type="submit" name="reset2" value="リセット">
<
input type="submit" name="modoru" value="戻る">
</
form>

<?
echo $user_name, $user_top, $user_mes;


}elseif($naosu){
//Форма с введенными ранее данными для редактирования
?>
<form method="post" action="<?= $_SERVER["PHP_SELF"]; ?>" name="keiji">
<
table border="1">
<
tr>
<
td>ID</td>
<
td><?= $user_id ?></td>
</
tr>
<
tr>
<
td>&#21517;前</td>
<td><input type="text" name="user_name" value="<?= $user_name ?>"></td>
</
tr>
<
tr>
<
td>&#24180;齢</td>
<td>
<
select name="user_age">
<? for($i = 0; $i < 99; $i++){ ?>
<option value="<?= $i ?>" <? if($user_age == $i){echo "selected";} ?>><?= $i ?></option>
<? } ?>
</select>
</
td>
</
tr>
<
tr>
<
td>&#12486;ーマ</td>
<td><input type="text" name="user_top" value="<?= $user_top ?>"></td>
</
tr>
<
tr>
<
td>&#12513;ッセージ</td>
<td><textarea name="user_mes" value="" cols="50" rows="10" wrap="physical"><?= $user_mes ?></textarea></td>
</
tr>
</
table>
<
input type="hidden" name="user_id" value="<?= $user_id ?>">
<
input type="submit" name="soushin2" value="送信">
<
input type="reset" name="reset" value="リセット">
</
form>

<?
echo $user_name, $user_top, $user_mes;
}else{
//Первая страница (форма и вывод зарегистрированных данных)

?>

<form method="post" action="<?= $_SERVER["PHP_SELF"]; ?>" name="keiji">
<
table border="1">
<
tr>
<
td>&#21517;前</td>
<td><input type="text" name="user_name" value="<?= $user_name ?>"></td>
</
tr>
<
tr>
<
td>&#24180;齢</td>
<td>
<
select name="user_age">
<? for($i = 0; $i < 99; $i++){ ?>
<option value="<?= $i ?>" <? if($user_age == $i){echo "selected";} ?>><?= $i ?></option>
<? } ?>
</select>
</
td>
</
tr>
<
tr>
<
td>&#12486;ーマ</td>
<td><input type="text" name="user_top" value="<?= $user_top ?>"></td>
</
tr>
<
tr>
<
td>&#12513;ッセージ</td>
<td><textarea name="user_mes" value="" cols="50" rows="10" wrap="physical"><?= $user_mes ?></textarea></td>
</
tr>
</
table>

<
input type="submit" name="kakunin" value="確認">
<
input type="submit" name="reset2" value="リセット">
<
input type="submit" name="koushin" value="更新">

</
form>
<?

$user_name = mb_convert_encoding($user_name, "EUC-JP");
$user_name = mysql_real_escape_string($user_name);
$user_name = mb_convert_encoding($user_name, "SJIS", "EUC-JP");

$user_top = mb_convert_encoding($user_top, "EUC-JP");
$user_top = mysql_real_escape_string($user_top);
$user_top = mb_convert_encoding($user_top, "SJIS", "EUC-JP");

$user_mes = mb_convert_encoding($user_mes, "EUC-JP");
$user_mes = mysql_real_escape_string($user_mes);
$user_mes = mb_convert_encoding($user_mes, "SJIS", "EUC-JP");

$asql = " SELECT * FROM w_user";
$asql .= " WHERE w_user_delflag = 0";
if(!$modoru){
if($user_id){
$asql .= " AND w_user_id = '{$user_id}'";
}
if($user_name){
$asql .= " AND w_user_name = '{$user_name}'";
}
if($user_age){
$asql .= " AND w_user_age = '{$user_age}'";
}
if($user_top){
$asql .= " AND w_user_top = '{$user_top}'";
}
if($user_mes){
$asql .= " AND w_user_mes = '{$user_mes}'";
}
}

echo $asql;
$aresult = mysql_query($asql, $link);
$arow = mysql_num_rows($aresult);

if($arow){
while($arows = mysql_fetch_array($aresult)){
$user_id = $arows["w_user_id"];
$user_name = $arows["w_user_name"];
$user_age = $arows["w_user_age"];
$user_top = $arows["w_user_top"];
$user_mes = $arows["w_user_mes"];

$tempHtml .= "<br>ID".$user_id."<br>\n";
$tempHtml .= "名前".$user_name."<br>\n";
$tempHtml .= "年齢".$user_age."<br>\n";
$tempHtml .= "テーマ".$user_top."<br>\n";
$tempHtml .= "メッセージ".nl2br($user_mes)."<br>\n";
$tempHtml .= "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."\" name=\"keiji\">\n";
$tempHtml .= "<input type=\"hidden\" name=\"user_id\" value=\"".$user_id."\">\n";
$tempHtml .= "<input type=\"hidden\" name=\"user_name\" value=\"".$user_name."\">\n";
$tempHtml .= "<input type=\"hidden\" name=\"user_age\" value=\"".$user_age."\">\n";
$tempHtml .= "<input type=\"hidden\" name=\"user_top\" value=\"".$user_top."\">\n";
$tempHtml .= "<input type=\"hidden\" name=\"user_mes\" value=\"".$user_mes."\">\n";
$tempHtml .= "<input type=\"submit\" name=\"naosu\" value=\"書き直す\">\n";
$tempHtml .= "</form>\n";
}
}


echo $tempHtml;
}

if($soushin){
//Отправка данных на сервер

$user_name = mb_convert_encoding($user_name, "EUC-JP");
$user_name = mysql_real_escape_string($user_name);
$user_name = mb_convert_encoding($user_name, "SJIS", "EUC-JP");

$user_top = mb_convert_encoding($user_top, "EUC-JP");
$user_top = mysql_real_escape_string($user_top);
$user_top = mb_convert_encoding($user_top, "SJIS", "EUC-JP");

$user_mes = mb_convert_encoding($user_mes, "EUC-JP");
$user_mes = mysql_real_escape_string($user_mes);
$user_mes = mb_convert_encoding($user_mes, "SJIS", "EUC-JP");

$isql = " INSERT INTO w_user";
$isql .= "(";
$isql .= "w_user_id,";
$isql .= "w_user_name,";
$isql .= "w_user_age,";
$isql .= "w_user_top,";
$isql .= "w_user_mes,";
$isql .= "w_user_delflag,";
$isql .= "w_user_update,";
$isql .= "w_user_regdate";
$isql .= ") VALUES (";
$isql .= "'',";
$isql .= "'{$user_name}',";
$isql .= "'{$user_age}',";
$isql .= "'{$user_top}',";
$isql .= "'{$user_mes}',";
$isql .= "0,";
$isql .= "now(),";
$isql .= "now()";
$isql .= ")";
echo $isql;

$iresult = mysql_query($isql) or die("クエリの送信に失敗しました".$isql);
$irow = mysql_affected_rows();

$user_id = null;
$user_name = null;
$user_age = null;
$user_top= null;
$user_mes = null;

}

if($soushin2){
//Отправка отредактированных данных в БД

$user_name = mb_convert_encoding($user_name, "EUC-JP");
$user_name = mysql_real_escape_string($user_name);
$user_name = mb_convert_encoding($user_name, "SJIS", "EUC-JP");

$user_top = mb_convert_encoding($user_top, "EUC-JP");
$user_top = mysql_real_escape_string($user_top);
$user_top = mb_convert_encoding($user_top, "SJIS", "EUC-JP");

$user_mes = mb_convert_encoding($user_mes, "EUC-JP");
$user_mes = mysql_real_escape_string($user_mes);
$user_mes = mb_convert_encoding($user_mes, "SJIS", "EUC-JP");

$asql = " UPDATE w_user SET";
$asql .= " w_user_name = '{$user_name}' , w_user_age = '{$user_age}' , w_user_top = '{$user_top}' , w_user_mes = '{$user_mes}'";
$asql .= " WHERE w_user_id = '{$user_id}'";
$aresult = mysql_query($asql, $link);

}

//Завершение соединенения с БД
?>

</body>
</
html>


Магические кавычки на сервере отключены.
Извините за глупые вопросы. Наверняка, темы эти много раз поднимались. Но я ламер в программировании. А разобраться хочу. Дня 3 уже никак не могу найти нормальное решение.
Часто в таких случаях советуют функцию stripslashes, но я читал, что это моветон. И вообще, следует избегать применение этой функции (хотя бы потому, что в очень сложных случаях потом и не разберешься где эта функция удаляет слеши, а где - нет)

Где можно что-то почитать по моему вопросу?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.