گمان می کنم سوالم را خیلی کلی پرسیدم. بنظر دوستان امنیت این کد برای فرم ثبت نام چقدر مناسب است؟
<?php
session_start();
// حذف بک اسلشهایی که به صورت خودکار توسط Magic Quotes به اطلاعات ارسال شده افزوده شده اند
function UnEscape($string) {
if (get_magic_quotes_gpc()) {
return stripslashes($string);
} else {
return $string;
}
}
$errors = array();
$min_length = 4;
$max_length = 20;
$min_length_pass = 6;
$max_length_pass = 20;
// اجرای اسکرپت ثبت نام در صورتی که اطلاعات با متد پست به صفحه ارسال شده باشند
if($_SERVER['REQUEST_METHOD'] == "POST") {
$username = UnEscape($_POST['username']);
$password = UnEscape($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
// چک کردن اطلاعات وارد شده توسط کاربر
if(strlen($username) < $min_length) {
$errors[] = "حداقل طول نام کاربری $min_length حرف است";
}
if(strlen($username) > $max_length) {
$errors[] = "حداکثر طول نام کاربری $max_length حرف است";
}
if(strlen($password) < $min_length_pass) {
$errors[] = "حداقل طول کلمه عبور $min_length حرف است";
}
if(strlen($password) > $max_length_pass) {
$errors[] = "حداکثر طول کلمه عبور $max_length حرف است";
}
if($_POST['password'] !== $_POST['retype_pass']) {
$errors[] = "کلمه عبور با تکرار کلمه عبور مطابقت ندارد";
}
if (empty($_POST["email"]))
{$errors[] = "لطفا ایمیل خود را وارد کنید";}
else
{
$email = ($_POST["email"]);
// check if e-mail address syntax is valid
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
{
$errors[] = "لطفا ایمیل خود را بصورت صحیح وارد کنید ";
}
}
// وارد کردن اطلاعات کاربر در صورتی که اطلاعات معتبر باشند
if(empty($errors)) {
// اتصال به سرور
mysql_connect('127.0.0.1', 'root', '') or die(mysql_error());
// اتصال به دیتابیس
mysql_select_db('myDB') or die(mysql_error());
// اسکیپ کردن داده های وارد شده توسط کاربر
$username = mysql_real_escape_string(htmlentities($username, ENT_QUOTES, 'UTF-8'));
$password = mysql_real_escape_string($password);
// به دست آوردن تعداد سطرهایی که نام کاربری مشابه نام کاربری انتخاب شده کاربر دارند
list($count) = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM user WHERE username = '$username';"));
if($count) {
// قطع عملیات در صورتی که نام کاربری وارد شده قبلاً ثبت شده باشد
mysql_close();
$errors[] = "نام کاربری مورد نظر قبلاً ثبت شده است!";
} else {
// ثبت اطلاعات و ریدایرکت کردن کاربر برای جلوگیری از ارسال مجدد اطلاعات در صورت رفرش شدن صفحه
mysql_query("INSERT INTO user SET username = '$username', email='$email', password = (SHA1(MD5($password)));") or die(mysql_error());
mysql_close();
$_SESSION['registeration_completed'] = true;
header("Location: $_SERVER[PHP_SELF]");
exit();
}
}
}
?>
<html>
<head>
</head>
<body>
<form id="form1" name="form1" method="post" action="<?php print $_SERVER['PHP_SELF'] ?>">
<?php
if(!empty($errors)) {
echo "<ul>";
foreach($errors as $error) {
echo "<li>$error</li> \n";
}
echo "</ul>";
} elseif (isset($_SESSION['registeration_completed'])){
echo "<h3>ثبت نام شما با موفقیت انجام شد.</h3>";
unset($_SESSION['registeration_completed']);
}
?>
<p>
<label for="username">نام کاربری : </label>
<input name="username" type="text" id="username" value="<?php echo UnEscape(isset($_POST['username'])); ?>" "maxlength="8" />
<label for="email">ایمیل : </label>
<input type="text" name="email" id="email" />
<label for="password">رمز عبور : </label>
<input type="password" name="password" id="password" />
<label for="retype_pass">تکرار رمز عبور : </label>
<input type="password" name="retype_pass" id="retype_pass" />
<input name="sign-up" type="submit" value="ثبت نام" />
</form>
</body>
</html>