Търси полето и полето и дава неговото ID

ma3x_ip

Registered
Ся аз се пробвах да направя това.
<?
include "conf.php";
$result = mysql_query("SELECT * FROM user WHERE user='aaaa'");
if (mysql_num_rows($result) > 0)
$row = mysql_fetch_array($result);
$id = $row['id'];

$sql = "SELECT * from user where $id='33'";
$query = mysql_query($sql) or die("Query error!");
while($row = mysql_fetch_array($query)){
echo $row['email'];
}
?>
1.Да търси поле user в BD и ако има съвпадение да ми искара неговото ID
2.Да ми искара Стойноста на това ID Полето email


аз написах това ам ми искарав мнгоо стойности :(

Това го правя за login Systems За забравена парола.
Потребитела въведели usernamer то му изпраща изважда email и му праща поща

Ако има проблеми с разбирането на темата кажете ще си я оправя.
 
Първо защо след като искаш да изпратиш само на даден потребител емейл използваш while като ти трябва само 1 поле.
Второто, което видях е това:
$sql = "SELECT * from user where $id='33'";
Не трябва ли да id да е без $.
Смисъл така:
$sql = "SELECT * from user where id='33'";
 
И по-скоро така:
$sql = "SELECT * from user where id='$id'";
 
В същност ако паролите ти се пазят в чист текст в базата (което не е добра идея) и искащ не да му генерираш нова парола а да му изпратиш текущата би било най-правилно да ползваш само един SELECT, а именно:


$user=(isset($_REQUEST['user']) ? mysql_real_escape_string($_REQUEST['user']) : '');
$mail=(isset($_REQUEST['mail']) ? mysql_real_escape_string($_REQUEST['mail']) : '');
$result = mysql_query("SELECT * FROM user WHERE user='$user' AND mail='$mail'");
if (mysql_num_rows($result) > 0) {
nqkakva_funkciq_za_izprashtane_na_mail($user, $mail, $subject, $message);
} else {
print "Error: Няма съответствие между user и mail";
}

Винаги изисквай възможно повече данни от потребителя преди да му изпратиш паролата. Не само mail или user а и двете.
 
Разбира се от същия $result ще вземеш паролата за да му я изпратиш. Забравих да го вмъкна.
$row = mysql_fetch_array($result);
$password = $row['password'];
 
Добре е да ползвате функция за проверка на $_REQUEST против SQL Injection.

function () {
foreach($_REQUEST as $key => $value) {
$var[$key]=mysql_real_escape_string($value);
}
}
така изшълнявайки я в началото на кода вие автоматично проверявате и ескейпвате всички $_POST и $_GET променливи за SQL injection и резултата ви се връща в $var.
След това всички променливи са ви, пример:

$var['user']
$var['mail']
и т.н.
 
HunteR каза:
Първо защо след като искаш да изпратиш само на даден потребител емейл използваш while като ти трябва само 1 поле.
Второто, което видях е това:
$sql = "SELECT * from user where $id='33'";
Не трябва ли да id да е без $.
Смисъл така:
$sql = "SELECT * from user where id='33'";

сега си видяш грешките :D и го оправих мерси много

мерис мнгоо и на @ggenov доста се постара
 

Back
Горе