PDA

View Full Version : سوال: در مورد تکراری نبودن متغیر



رضا قربانی
شنبه 10 اردیبهشت 1390, 02:12 صبح
با سلام خدمت تمامی دوستان این قسمت

نمی دونم عنوان تاپیک رو درست انتخاب کردم یا نه .

من یک فرم ثبت نام دارم و زمانی که یه نام کاربری میاد و ثبت می کنه باید داخل جدولم بچرخه و اگه تکراری نبود ، اکانت کاربر ساخته بشه وگرنه اجازه نده.

مثل تمام فروم ها ==> اگه نام کاربری در بانک وجود داشت که اجازه درج در بانک رو نمی ده.

من مشکلم اینجاست - نمی دونم چطوری برنامه باید در بانک بچرخه و ببینه وجود داره یا نه .


من اینطوری عمل کردم که این درست نیست





$link = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$link);
$sql = " select * from `tbl` ";
$result = mysql_query($sql, $link) or die(mysql_error());
if(mysql_affected_rows($link)>0)
{
while($row=mysql_fetch_assoc($result))
{
$Duplicate=$row["user"];
}
}

if($name==$Duplicate)
{

die('


<h4 style="margin-top:100px; text-align:center; color:red"> !!! این نام کاربری قبلا ثبت شده است !!! </h4><a href="'.$_SERVER['HTTP_REFERER'].'"><center><h2>برگشت و تغییر نام کاربری</h2></center></a>');
return false;
}


با توجه به کد بالایی من باید چی کار کنم ؟
$name === یوزری که کاربر به صورت پست ارسال می کنه

ممنون می شم

eshpilen
شنبه 10 اردیبهشت 1390, 08:34 صبح
چرا اینطوری؟
یه دستور SELECT درست کن با این شرط که نام کاربری برابر نام کاربری مورد نظر باشه. بعدم چک کن آیا رکوردی برگردونده شده یا نه (با mysql_num_rows).
بعدشم اون mysql_affected_rows چیه گذاشتی!!
mysql_affected_rows مال دستورات INSERT, UPDATE, REPLACE or DELETE هست، نه SELECT.

رضا قربانی
شنبه 10 اردیبهشت 1390, 09:48 صبح
چرا اینطوری؟
یه دستور SELECT درست کن با این شرط که نام کاربری برابر نام کاربری مورد نظر باشه. بعدم چک کن آیا رکوردی برگردونده شده یا نه (با mysql_num_rows).
بعدشم اون mysql_affected_rows چیه گذاشتی!!
mysql_affected_rows مال دستورات INSERT, UPDATE, REPLACE or DELETE هست، نه SELECT.

خب می شه کدش رو بذاری

MMSHFE
شنبه 10 اردیبهشت 1390, 10:05 صبح
با سلام، اين كد رو ببينيد:


$result = mysql_query('SELECT * FROM `tbl` WHERE (LOWER(`username`)=\''.strtolower($name).'\')');
switch(mysql_num_rows($result)
{
case -1:
die(mysql_error());
break;
case 0:
//You can insert the new user here
break;
default:
die('User already exists.');
break;
}

اميدوارم مشكلتون برطرف بشه.
موفق باشيد.

رضا قربانی
شنبه 10 اردیبهشت 1390, 12:46 عصر
LOWER واسه چی هست - چه عملی رو انجام می ده ؟


eshpilen (http://barnamenevis.org/member.php?148005-eshpilen) جان کدتون رو میذارید تا ببینم جریان از چه قراره

tem988
شنبه 10 اردیبهشت 1390, 13:10 عصر
strtolower هم نام کاربری رو با حروف کوچک میکنه



<?php
$user = mysql_fetch_array(mysql_query("Select * From memeber Where username = '$_POST[username]' "));
if(!$user['username']){
echo "ثبت نام انجام شد";
}else echo "این نام کاربری وجود دارد";
?>

binyaft
شنبه 10 اردیبهشت 1390, 13:13 عصر
LoWER برای تبدیل همه حروف ها به صورت کوچک هست ! A=a , B=b

sargardoon
شنبه 10 اردیبهشت 1390, 17:52 عصر
دوست عزیز امیدوارم مشکلت حل شده باشه، فقط یه چیز هم یادت باشه قبل از هر چیزی اطلاعات داده شده توسط کاربر را فیلتر کنی. برای امنیت بیشتر.
من از mysql_num_rows استفاده میکنم.


$numRec = mysql_num_rows(mysql_query("SELECT * FROM $tablename WHERE username = '$_POST[username]';"));
echo ($numRec > 0) ? 'dublicate' : 'avaliable';

رضا قربانی
یک شنبه 11 اردیبهشت 1390, 00:24 صبح
با تشکر از همگی دوستان و در نهایت من به اینگونه استفاده کردم و جوابم رو گرفتم و اگر هم کسی خواست می تونه استفاده کنه



$link = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$link);
$SearchUser = mysql_fetch_array(mysql_query("select * from `tbl` Where `user` = '$name' "));
if($SearchUser['user']){
die('
این نام کاربری وجود دارد');
return false;
}


راجع به حروف بزرگ و کوچک عرض کنم که بعضی از کاربران از جمله من برای وارد کردن پسورد از حروف بزرگ و کوچیک استفاده می کنیم و این اصلا خوب نیست که تبدیلشون کنیم !!! دلیلی داره ؟

Mahdi.Spirit
یک شنبه 11 اردیبهشت 1390, 00:58 صبح
راجع به حروف بزرگ و کوچک عرض کنم که بعضی از کاربران از جمله من برای وارد کردن پسورد از حروف بزرگ و کوچیک استفاده می کنیم و این اصلا خوب نیست که تبدیلشون کنیم !!! دلیلی داره ؟

اما این كه دوستان گفتن برای چك كردن یوزر نیم بود! نه پسورد
اگه این تبدیل رو انجام ندین نام كاربری با حروف كوچیك و بزرگ با هم تفاوت پیدا میكنه!
یعنی هم كاربر با نام Galiken ثبت میشه هم با galiken
مسلما نمیخواین اینطوری بشه!