|
|
|
|
|
для: cheops
(25.02.2007 в 12:12)
| | Я так делаю,но чтото не так :(
Посмотрите пожалуйста мой код:
<a href="?do=edpwd" title="Изменить пароль">Изменить пароль</a><br /><br />
<table class="td" stye="width: 250;">
<form method="post" enctype="multipart/form-data">
<tr><td>E-mail:</td></tr><tr><td><input type="text" name="email" maxlength="25" value="<?php echo $user['email']; ?>" /></td></tr>
<tr><td>Icq:</td></tr><tr><td><input type="text" name="icq" maxlength="9" value="<?php if($user['icq'] != 0) echo $user['icq']; ?>" /></td></tr>
<tr><td>Сайт: <small>(без "http://")</small></td></tr><tr><td><input type="text" name="url" value="<?php if(!empty($user['icq'])) echo $user['url']; ?>"/></td></tr>
<tr><td><input class="button" type="submit" name="save" title="Созранить изменения" id="but" value="Сохранить" /></td></tr>
</form>
</table>
<br /><br />
<?php
if ($save) {
//Убираем пробелы в конце строк и кавычки закрываем слешами
$_POST['email'] = trim(addslashes($_POST['email']));
$_POST['url'] = trim(addslashes($_POST['url']));
$_POST['icq'] = trim(addslashes($_POST['icq']));
//Проверяем заполнены ли обязательные поля
if(!empty($_POST['icq'])){
if(!preg_match("|^[\d]+$|", $_POST['icq']))
{
exit("Поле 'ICQ' должно содержать только цифры");
}
if( strlen($_POST['icq']) < 5 || strlen($_POST['icq']) > 9)
exit("Поле 'ICQ' должно содержать от 5 до 9 цифр");
}
if(empty($_POST['email']) && (isset($_POST['email']))) {
exit("Заполните поле 'E-mail'");
} else {
if(!preg_match("|^[-0-9a-z_]+@[-0-9a-z_]+\.[a-z]{2,6}$|i", $_POST['email']) && (!isset($_POST['email']))) {
exit("Поле 'E-mail' должно соответствовать формату billy@microsoft.com");
}
}
//Проверяем есть ли такой e-mail в базе данных
require_once("config.php");
// Проверяем, не было ли переданное имя зарегистрировано ранее
$query = "SELECT COUNT(*) FROM users WHERE email = '$_POST[email]' AND id <> '$_POST[id]'";
$usr = mysql_query($query);
if(!$usr)
exit("Ошибка - ".mysql_error());
$total = mysql_result($usr, 0);
if($total > 0)
{
exit("Такой 'E-mail' уже имеется в базе данных");
}
//Смотрим данные на данный момент
if (isset($_SESSION['name'])){
$query = "SELECT * FROM users WHERE name = '$_SESSION[name]'";
$usr = mysql_query($query);
if(!$usr)
exit(mysql_error());
$user = mysql_fetch_array($usr);
}
//Обновляем базу данных с новыми полученными данными
$query = "SELECT * FROM users WHERE name='$_SESSION[name]' AND id <> '$id'";
$result = mysql_query($query);
$numrows = mysql_num_rows($result);
if ($numrows < 1) {
$_POST['pass'] = md5($_POST['pass']);
$query = "UPDATE users SET icq = '$_POST[icq]', url = '$_POST[url]', email = '$_POST[email]' WHERE id = '$id'";
$result = mysql_query($query);
if ($result == 1) {
echo "<b>Изменения сохранены</b>";
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL='$_SERVER[REQUEST_URI]'>
</HEAD></HTML>";
} else {
print "Ошибка!Изменения не приняты<br>\n";
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: SnooPI
(25.02.2007 в 05:20)
| | А вы $id передаёте? Вообще условие AND id <> '$id' должно предотвращать проверку e-mail для текущего пользователя. | |
|
|
|
|
|
|
| Код проверки, если литакой email в бд
<?php
$query = "SELECT COUNT(*) FROM users WHERE email = '$_POST[email]' AND id <> '$id'";
$usr = mysql_query($query);
if(!$usr)
exit("Ошибка - ".mysql_error());
$total = mysql_result($usr, 0);
if($total > 0)
{
exit("Такой 'E-mail' уже имеется в базе данных");
}
?>
|
Дальше идет апдейт юзера
<?php
$query = "SELECT * FROM users WHERE name='$_SESSION[name]' AND id = '$id'";
$result = mysql_query($query);
$numrows = mysql_num_rows($result);
if ($numrows < 1) {
$_POST['pass'] = md5($_POST['pass']);
$query = "UPDATE users SET icq = '$_POST[icq]', url = '$_POST[url]', email = '$_POST[email]' WHERE name = '$_SESSION[name]'";
$result = mysql_query($query);
if ($result == 1) {
echo "<b>Изменения сохранены</b>";
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL='$_SERVER[REQUEST_URI]'>
</HEAD></HTML>";
}
?>
|
Так вот.......если пользователь меняет свои данные, и меняет напрмиер поле icq и дальше нажимает сохранить, то ему выдает ошибку "Такой 'E-mail' уже имеется в базе данных"
Так вот.....какой запрос сделать чтобы себе не выдавало? | |
|
|
|
|