Проблем с update на данни...

tedo96

Registered
Проблема ми е следният... Когато си направя update на данните паролата не ми се записва в db-то и старата се изтрива...
PHP:
<?php
session_start();
include 'includes/config.php';
include 'includes/security.php';
if(isset($_POST['edit']))
    {
    $pass1 = trim(addslashes(htmlspecialchars($_POST['password1'])));
    $pass2 = trim(addslashes(htmlspecialchars($_POST['password2'])));
    $mail = trim(addslashes(htmlspecialchars($_POST['mail'])));
	$skype = trim(addslashes(htmlspecialchars($_POST['skype'])));
	$site = trim(addslashes(htmlspecialchars($_POST['site'])));
    if(empty($pass1) || empty($pass2) || empty($mail))
        {
        $error = 'Попълнете всички полета';
        }
    else
        {
            if(strlen($username) >= 3)
                {
                $q = mysql_query("SELECT `username` FROM users WHERE `username`='$username' LIMIT 1") or die(mysql_error());
                if(mysql_num_rows($q) > 0)
                    {
                        if($pass1 == $pass2)
                            {
                            if(strlen($pass1) >=6)
                                {
                                if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+))*$",$mail))
                                    {
                                    $error = 'Невалиден емайл адрес!';
                                    }
                                }
                                    $newPass = md5("bg".$pass1."1337");
                                    mysql_query($query) or die(mysql_error());
                                    $check = 'Промените са извършени!';
                                    }
                                }
                                else
                                {
                                    $error = 'Паролата трябва да бъде по дълга от 6 символа!';
                                }

                            }
                            else
                            {
                                $error = 'Паролите не съвпадат!';
                            }
                    }
                }

$username = $_SESSION['username'];
$query = mysql_query("SELECT * FROM `users` WHERE `username`='$username'") or die(mysql_error());
while($row = mysql_fetch_assoc($query))
{   
	if(!session_is_registered(username)){
	echo "Трябва да влезеш, за да промениш профила си!<div id='center_down'></div>";
	} else {
	echo "
        <table>
        <form method=\"post\" action=\"\">
            <tr><td>Име: </td><td>$username</td></tr>
            <tr><td>Парола: </td><td><input type=\"password\" name=\"password1\" /></td></tr>
            <tr><td>Повтори парола: </td><td><input type=\"password\" name=\"password2\" /></td></tr>
            <tr><td>Емайл: </td><td><input type=\"text\" name=\"mail\" value=\"$row[mail]\" /></td></tr>
            <tr><td>Skype: </td><td><input type=\"text\" name=\"skype\" value=\"$row[skype]\" /></td></tr>
            <tr><td>Сайт: </td><td><input type=\"text\" name=\"site\" value=\"$row[site]\" /></td></tr>
            
            
            <tr><td><input type=\"submit\" value=\"Промени\" name=\"edit\" /></td></tr>
        </form>
        </table>
        ";
         
	}
	
	$q = mysql_query("UPDATE users SET `username`='$username', `mail`='$mail', `skype`='$skype', `site`='$site' WHERE username='$username' ") or die(mysql_error());
	$qpass = mysql_query("UPDATE users SET `password`='$newPass' WHERE username='$username' ") or die(mysql_error());
}
 
tedo96 каза:
Проблема ми е следният... Когато си направя update на данните паролата не ми се записва в db-то и старата се изтрива...
А сигурен ли си, че само паролата не ти се записва?
Я виж дали ти трябва тази проверка
PHP:
 if(strlen($username) >= 3)
иначе проблема ти е ясен, ъпдейтваш полето за паролата с празен стринг.
По-добре седни и си пренапиши скрипта :idea:
 
Пренаписах го, но проблема пак си го има....
PHP:
<?php
session_start();
include 'includes/config.php';
include 'includes/security.php';
if(isset($_POST['edit']))
    {
    $pass1 = trim(addslashes(htmlspecialchars($_POST['password1'])));
    $pass2 = trim(addslashes(htmlspecialchars($_POST['password2'])));
    $mail = trim(addslashes(htmlspecialchars($_POST['mail'])));
 $skype = trim(addslashes(htmlspecialchars($_POST['skype'])));
 $site = trim(addslashes(htmlspecialchars($_POST['site'])));
 $avatar = trim(addslashes(htmlspecialchars($_POST['avatar'])));

                $q = mysql_query("SELECT `username` FROM users WHERE `username`='$username' LIMIT 1") or die(mysql_error());
                if(mysql_num_rows($q) > 0)
                    {
                        if($pass1 == $pass2)
                            {
                            if(strlen($pass1) <=6)
                                {
         $error = 'Паролата трябва да бъде по дълга от 6 символа!';
                                }
                                if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+))*$",$mail))
                                {
                                    $error = 'Невалиден емайл адрес!';
                                }
                                    $newPass = md5("bg".$pass1."1337");
                                    //mysql_query($q) or die(mysql_error());
                                    $check = 'Регистирахте се успешно. Може да се логнете!';
                                    $up = "UPDATE `users` SET `mail`='$mail', `skype`='$skype', `site`='$site', `avatar`='$avatar', `password`='$newPass' WHERE `username`='$username'";
                                    mysql_query($up) or die(mysql_error());

//$qpass = mysql_query("UPDATE users SET `password`='$newPass' WHERE username='$username' ") or die(mysql_error());

                            }

                                else
                                {
         $error = 'Паролите не съвпадат!';
                                }
                    }
    }
?>[php]

Знам, че подреждам кода си много зле... Може да не ми го казвате. :D
 
tedo96 каза:
Пренаписах го, но проблема пак си го има....
PHP:
<?php
session_start();
include 'includes/config.php';
include 'includes/security.php';
if(addslashes($_POST['edit']))
{
$pass1=md5($_POST['password1']);
$pass2=md5($_POST['password2']);
 $mail=htmlspecialchars($_POST['mail']);
 $skype=addslashes($_POST['skype']);
 $site=htmlspecialchars($_POST['site']);
 $avatar=htmlspecialchars($_POST['avatar']);
$q="SELECT username FROM users WHERE username='$username' LIMIT 1";
$query = mysql_query($q);
if(mysql_num_rows($query) > 0)
{
if($pass1 == $pass2)
{
if(strlen($pass1) <=6)
{
$error = 'Паролата трябва да бъде по дълга от 6 символа!';
}
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+))*$",$mail))
{
$error = 'Невалиден емайл адрес!';
}
$newPass = md5("bg".$pass1."1337");
//mysql_query($q) or die(mysql_error());
$check = 'Регистирахте се успешно. Може да се логнете!';
$up = "UPDATE users SET mail='$mail', skype='$skype', site='$site', avatar='$avatar', password='$newPass' WHERE username='$username'";
mysql_query($up) or die(mysql_error());
//$qpass = mysql_query("UPDATE users SET `password`='$newPass' WHERE username='$username' ") or die(mysql_error());
}
else
{
$error = 'Паролите не съвпадат!';
}
}
}
?>[php]

Знам, че подреждам кода си много зле... Може да не ми го казвате. :D

оправих ти го ;)
 
tedo96 каза:
Сега вече нищо не се update-ва. Новата информация не се запазва... :?

опитай така
Код:
<?php
session_start();
include 'includes/config.php';
include 'includes/security.php';
if($_POST['edit'])
{
$pass1=md5($_POST['password1']);
$pass2=md5($_POST['password2']);
$mail=htmlspecialchars($_POST['mail']);
$skype=addslashes($_POST['skype']);
$site=htmlspecialchars($_POST['site']);
$avatar=htmlspecialchars($_POST['avatar']);
$q="SELECT username FROM users WHERE username='$username' LIMIT 1";
$query = mysql_query($q);
if(mysql_num_rows($query) > 0)
{
if($pass1 == $pass2)
{
if(strlen($pass1) <=6)
{
$error = 'Паролата трябва да бъде по дълга от 6 символа!';
}
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+))*$",$mail))
{
$error = 'Невалиден емайл адрес!';
}
$newPass = "bg".$pass1."1337";
//mysql_query($q) or die(mysql_error());
$check = 'Регистирахте се успешно. Може да се логнете!';
$up = "UPDATE users SET mail='$mail', skype='$skype', site='$site', avatar='$avatar', password='$newPass' WHERE username='$username'";
mysql_query($up) or die(mysql_error());
$qpass = mysql_query("UPDATE users SET password='$newPass' WHERE username='$username'") or die(mysql_error());
}
else
{
$error = 'Паролите не съвпадат!';
}
}
}
?>
 
tedo96 каза:
Същото... :shock:

хмм трябва да стане,сигорен ли си че осъществяваш връзка с базата данни и таблицата се казва така и на кой хост си ?
 
Да, сигурен съм. Не е от хостинга.
Ето така го ползвам:
PHP:
<?php
$username = $_SESSION['username'];
$query = mysql_query("SELECT * FROM `users` WHERE `username`='$username'") or die(mysql_error());
while($row = mysql_fetch_assoc($query))
{
 if(!$_SESSION['username']){
 echo "Трябва да влезеш, за да промениш профила си!<div id='center_down'></div>";
 } else {
   if($error) {
  print '<div style="color:red">'.$error.'</div>';
 }
 echo "
        <table>
        <form method=\"post\" action=\"\">
            <tr><td>Име: </td><td>$username</td></tr>
            <tr><td>Парола: </td><td><input type=\"password\" name=\"password1\" /></td></tr>
            <tr><td>Повтори парола: </td><td><input type=\"password\" name=\"password2\" /></td></tr>
            <tr><td>Емайл: </td><td><input type=\"text\" name=\"mail\" value=\"$row[mail]\" /></td></tr>
            <tr><td>Skype: </td><td><input type=\"text\" name=\"skype\" value=\"$row[skype]\" /></td></tr>
            <tr><td>Сайт: </td><td><input type=\"text\" name=\"site\" value=\"$row[site]\" /></td></tr>
            <tr><td>Аватар: </td><td><input type=\"text\" name=\"avatar\" value=\"$row[avatar]\" /></td></tr>


            <tr><td><input type=\"submit\" value=\"Промени\" name=\"edit\" /></td></tr>
        </form>
        </table>
        ";
}
}
?>
 
html логина:
Код:
<?php
$username = $_SESSION['username'];
$query = mysql_query("SELECT * FROM `users` WHERE username='$username'");
while($row = mysql_fetch_assoc($query))
{
if(!$_SESSION['username']){
echo "Трябва да влезеш, за да промениш профила си!<div id='center_down'></div>";
} else {
if($error) {
print '<div style="color:red">'.$error.'</div>';
}
echo "
<table>
<form method="post" action="">
<tr><td>Име: </td><td>$username</td></tr>
<tr><td>Парола: </td><td><input type="password" name="password1" /></td></tr>
<tr><td>Повтори парола: </td><td><input type="password" name="password2" /></td></tr>
<tr><td>Емайл: </td><td><input type="text" name="mail" value="$row[mail]" /></td></tr>
<tr><td>Skype: </td><td><input type="text" name="skype" value="$row[skype]" /></td></tr>
<tr><td>Сайт: </td><td><input type="text" name="site" value="$row[site]" /></td></tr>
<tr><td>Аватар: </td><td><input type="text" name="avatar" value="$row[avatar]" /></td></tr>
<tr><td><input type="submit" value="Промени" name="edit" /></td></tr>
</form>
</table>
";
}
}
?>

php-то:
Код:
<?php
session_start();
include 'includes/config.php';
include 'includes/security.php';
if($_POST['edit'])
{
$pass1=$_POST['password1']);
$pass2=$_POST['password2']);
$mail=htmlspecialchars($_POST['mail']);
$skype=addslashes($_POST['skype']);
$site=htmlspecialchars($_POST['site']);
$avatar=htmlspecialchars($_POST['avatar']);
$q="SELECT username FROM users WHERE username='$username' LIMIT 1";
$query = mysql_query($q);
if(mysql_num_rows($query) > 0)
{
if($pass1 == $pass2)
{
if(strlen($pass1) <=6)
{
$error = 'Паролата трябва да бъде по дълга от 6 символа!';
}
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+))*$",$mail))
{
$error = 'Невалиден емайл адрес!';
}
$newPass = md5("bg".$pass1."1337");
mysql_query($q) or die(mysql_error());
$check = 'Регистирахте се успешно. Може да се логнете!';
$up = "UPDATE users SET mail='$mail', skype='$skype', site='$site', avatar='$avatar', password='$newPass' WHERE username='$username'";
mysql_query($up) or die(mysql_error());
$qpass = mysql_query("UPDATE users SET password='$newPass' WHERE username='$username'") or die(mysql_error());
}
else
{
$error = 'Паролите не съвпадат!';
}
}
}
?>
 
PHP:
<?php
session_start();
include 'includes/config.php';
include 'includes/security.php';

$username = isset($_SESSION['username']) ? $_SESSION['username'] : NULL;
if(isset($_POST['edit']))
{
	$pass1 = trim(addslashes(htmlspecialchars($_POST['password1'])));
	$pass2 = trim(addslashes(htmlspecialchars($_POST['password2'])));
	$mail = trim(addslashes(htmlspecialchars($_POST['mail'])));
	$skype = trim(addslashes(htmlspecialchars($_POST['skype'])));
	$site = trim(addslashes(htmlspecialchars($_POST['site'])));
	if(empty($pass1) || empty($pass2) || empty($mail))
	{
		$error = "Попълнете всички полета";
	}
	else
	{
		if(strlen($username) >= 3)
		{
			$q = mysql_query("SELECT `username` FROM `users` WHERE `username`='{$username}' LIMIT 1") or die(mysql_error());
			if(mysql_num_rows($q) > 0)
			{
				if($pass1 == $pass2)
				{
					if(strlen($pass1) >= 6)
                    {
						if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+))*$",$mail))
						{
							$error = "Невалиден емайл адрес!";
						}
						else
						{
							$newPass = md5("bg".$pass1."1337");
							$q = mysql_query("UPDATE `users` SET `password` = '{$newPass}', `mail`='{$mail}', `skype`='{$skype}', `site`='{$site}' WHERE `username`='{$username}'") or die(mysql_error());
							$check = "Промените са извършени!";
						}
					}
					else
					{
						$error = "Паролата трябва да е по-голяма от 6 символа!";
					}
				}
				else
				{
					$error = "Паролите не съвпадат!";
				}
			}
			else
			{
				$error = "Потребителското име не съществува!";
			}
		}
		else
		{
			$error = "Потребителското име трябва да е по-голямо от 3 символа!";
		}
	}
}

$query = mysql_query("SELECT * FROM `users` WHERE `username`='{$username}'") or die(mysql_error());
if(!isset($_SESSION['username'])){
	while($row = mysql_fetch_assoc($query))
	{   
		?>
		<table>
		<form method="POST" action="">
			<tr><td>Име: </td><td><?php echo $username; ?></td></tr>
			<tr><td>Парола: </td><td><input type="password" name="password1" /></td></tr>
			<tr><td>Повтори парола: </td><td><input type="password" name="password2" /></td></tr>
			<tr><td>Емайл: </td><td><input type="text" name="mail" value="<?php echo $row['mail']; ?>" /></td></tr>
			<tr><td>Skype: </td><td><input type="text" name="skype" value="<?php echo $row['skype']; ?>" /></td></tr>
			<tr><td>Сайт: </td><td><input type="text" name="site" value="<?php echo $row['site']; ?>" /></td></tr>
			<tr><td><input type="submit" value="Промени" name="edit" /></td></tr>
		</form>
		</table>
		<?php 
	}
}
?>

Така?
 
Еми ти във формата нали ги подаваш като стойности, като ги взимаш от базата данни? Преди да натиснеш промяна, сменяш ли с други стойности ?
 
Добавих си:
PHP:
if($error) {
print '<div style="color:red">'.$error.'</div>';
}
и разбрах от къде идва проблема. В момента кода ми иска задължително да се въведе нова парола, а аз не искам да е така.
Направих реда:
PHP:
if(empty($pass1) || empty($pass2) || empty($mail))
//така
if(empty($mail))
и като не напиша парола ми изписва: "Паролата трябва да е по-голяма от 6 символа!"
 
tedo96 каза:
Добавих си:
PHP:
if($error) {
print '<div style="color:red">'.$error.'</div>';
}
и разбрах от къде идва проблема. В момента кода ми иска задължително да се въведе нова парола, а аз не искам да е така.
Направих реда:
PHP:
if(empty($pass1) || empty($pass2) || empty($mail))
//така
if(empty($mail))
и като не напиша парола ми изписва: "Паролата трябва да е по-голяма от 6 символа!"

Еми такова е условието, ако е по-малка от 6 да вади грешка. Напиши примерно 123456 за парола...


ЕДИТ: Разбрах какво искаш, сега ще ти постна кода....
 

Горе