-
December 16th, 2013, 18:16
#1
عضو جدید
درخواست راهنمایی در ایجاد فرم ثبت نام php
سلام.
دوستان من یک تازه کار در زمینه php هستم. نیاز به کمک دارم.
من یک فرم ثبت نام درست کردم. بعد از طریق فایل فانکشنز اون رو به دیتابیس متصل کردم. داخل دیتابیس هم یک جدول با عنوان یوزرز ساختم.
حالا نمیدونم مشکلم از کجاست که ثبت نام صورت نمیگیره.
این فایل فرم ثبت نام منه :
کد:
<?php
require_once ('functions.php') ;
if (isset($_POST['username']) AND isset($_POST['password']) )
{
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$phone = $_POST['phone'];
require_once ('securimage.php');
$securimage = new Securimage();
if ($securimage->check($_POST['captcha_code']) == false) {
// the code was incorrect
// you should handle the error so that the form processor doesn't continue
// or you can use the following code if there is no validation or you do not know how
echo "تصویر امنیتی اشتباه وارد شده است<br /><br />";
echo "برای بازگشت به صفحه قبلی <a href='javascript:history.go(-1)'>اینجا</a> کلیک نمایید";
exit;
}
$result = registerUser ($username,$password,$email,$phone);
if ($result)
{
echo 'ثبت نام شما با موفقیت انجام شد';
}else
{
echo '<b style="color: red">خطای سیستمی</b>';
}
}
?>
<script type="text/javascript" >
function checkusername(value){
$.post('ajaxfunctions.php',{username: value},function(data){
$('#usernote').html(data);}
);
}
</script>
<div class="art-layout-wrapper clearfix">
<div class="art-content-layout">
<div class="art-content-layout-row">
<div class="art-layout-cell art-content clearfix">
<article class="art-post art-article">
<h2 class="art-postheader">ثبت نام جهت شرکت در ختم قرآن
</h2>
<div class="art-postcontent art-postcontent-0 clearfix">
<div class="art-content-layout">
<div class="art-content-layout-row">
<div class="art-layout-cell layout-item-0" style="width: 10%">
<h3>
کاربران گرامی ضمن خوش آمد گویی، لطفا جهت شرکت
در ختم گروهی قرآن کریم از طریق فرم زیر در سایت ثبت نام نمایید و یا اگر
قبلا ثبت نام کرده اید از طریق قسمت ورود به سایت در سمت راست وارد کنترل پنل کاربری خود شوید
</h3>
<pre>
<form method="post" name="registerform" enctype="multipart/form-data">
نام کاربری: <input name="username" type="text" onblur="checkusername(this.value)"> <div id="usernote"></div>
رمز عبور: <input name="password" type="password">
ایمیل: <input name="email" type="text">
تلفن همراه: <input name="phone" type="text">
تصویر امنیتی
<img id="captcha" src="securimage_show.php" alt="CAPTCHA Image" />
<input type="text" name="captcha_code" size="10" maxlength="6" dir="ltr" />
<a href="#" onclick="document.getElementById('captcha').src = 'securimage_show.php?' + Math.random(); return false">[ رفرش تصویر امنیتی ]</a>
<input name="submit" type="submit" value="ثبت نام">
</form>
</pre>
</article>
</div>
این هم فایل فانکشن من هست:
کد:
<?php@mysql_connect('localhost','root','') or die('DB Connection Error');
@mysql_select_db('quran1');
mysql_query("SET NAMES UTF8");
function registerUser ($username,$password,$email,$phone)
{
$password = md5($password);
$time = time();
$result = mysql_query("
INSERT INTO users VALUES (NULL , '$username' , '$password' , '$email' ,
'$phone' ,'$time' , 0 , 2 ) ");
if ($result) return true; return false;
}
?>
حالا اگر امکان داره راهنماییم کنید که کجای کدنویسیم ایراد داره که ثبت نام خطا میده و انجام نمیشه. ممنونم.
-
-
December 16th, 2013 18:16
# ADS
-
December 16th, 2013, 19:55
#2
پاسخ : درخواست راهنمایی در ایجاد فرم ثبت نام php
خطایی که php میده رو هم مینوشتید بد نبودا!
-
-
December 16th, 2013, 21:40
#3
عضو جدید
پاسخ : درخواست راهنمایی در ایجاد فرم ثبت نام php
خطایی خاصی نمیده. طبق همون کدی که خودم نوشتم در صورت ثبت نام نشدن مینویسه خطای سیستمی.
$result = registerUser ($username,$password,$email,$phone);
if ($result)
{
echo 'ثبت نام شما با موفقیت انجام شد';
}else
{
echo '<b style="color: red">خطای سیستمی</b>';
}
-
-
December 16th, 2013, 21:58
#4
پاسخ : درخواست راهنمایی در ایجاد فرم ثبت نام php
خط زیر رو
کد PHP:
echo '<b style="color: red">خطای سیستمی</b>';
با این جایگزین کنید. بعد ببینید چه خطایی میده.
کد PHP:
echo '<b style="color: red">خطای سیستمی</b> '.mysql_error();
-
-
December 17th, 2013, 09:51
#5
عضو جدید
پاسخ : درخواست راهنمایی در ایجاد فرم ثبت نام php
چه خوب مشکل رو نوشت.
این رو مینویسه:
خطای سیستمی Column 'id' cannot be null
من رفتم توی دیتابیس. جدول یوزرز رو دیدم. من اینطوری ساختم. نمیدونم مشکل از کجاشه چون اینطوری به ما یاد دادن که برای آی دی primery باشه و attributes هم روی unsigned باشه. تیک A-I رو هم زدم.
1.jpg
-
-
December 17th, 2013, 09:53
#6
عضو جدید
پاسخ : درخواست راهنمایی در ایجاد فرم ثبت نام php
چه خوب مشکل رو نوشت.
این رو مینویسه:
خطای سیستمی Column 'id' cannot be null
من رفتم توی دیتابیس. جدول یوزرز رو دیدم. من اینطوری ساختم. نمیدونم مشکل از کجاشه چون اینطوری به ما یاد دادن که برای آی دی primery باشه و attributes هم روی unsigned باشه. تیک A-I رو هم زدم.
-
-
December 17th, 2013, 10:00
#7
عضو جدید
پاسخ : درخواست راهنمایی در ایجاد فرم ثبت نام php
مشکل حل شد. دوست عزیز خیلی ممنونم که اون کد رو نوشتی تا من بفهمم مشکل از کجاست. یک بار دیگه id رو ساختم و A-I رو فعال کردم و درست شد. ممنونم.
من توی ساخت این اسکریپت در آینده حتما بازم به مشکل میخورم. امیدوارم دوستان باز هم همینجا به سوالاتم جواب بدن. تشکر
-
-
December 17th, 2013, 10:33
#8
پاسخ : درخواست راهنمایی در ایجاد فرم ثبت نام php
چند تا نکته که بد نیست رعایت کنید:
- به جای mysql از mysqli یا pdo استفاده کنید.
- اطلاعات ورودی رو قبل از نوشتن در دیتابیس ولیدیت کنید. (مثلا از نظر ماکزیمم کاراکتر. صحیح بودن الگوی ایمیل، تلفن و ...)
- خاصیت نام ستون username رو unique بذارید. و احیانا همینطور email بسته به نیاز؟
و...
-
-
December 18th, 2013, 10:29
#9
عضو جدید
پاسخ : درخواست راهنمایی در ایجاد فرم ثبت نام php
بسیار ممنونم از نکاتی که فرمودید.
خواهش میکنم باز هم از این نکات ریز و مهم بهم یاد بدید.
گه میشه درباره ولیدیت کردن کاراکتر ها بیشتر توضیح بدید. چطوری اطلاعات ورودی به دیتابیس رو ولیدیت کنم؟
و سوال آخرم اینکه unique کردن چه کاری انجام میده و از کجا بفهمم نیاز هست که ستونی رو unique کنم؟
تشکر
-
-
December 18th, 2013, 12:26
#10
پاسخ : درخواست راهنمایی در ایجاد فرم ثبت نام php
برای ولیدیت کردن کاراکتر ها می توانید از تابع
addslashes در php یا توابع خود mysql استفاده کنید که کاراکتر های خواص را از بین می برد مانند:
1)
mysql_escape_string
2) mysql_real_escape_string
و در جوای سوال unique کردن باید بگم که در table که username های شما قرار دارد اگه ستون user دارای خاصیت unique باشد اجازه نمی دهد user تکراری در ستون از table که unique است قرار بگیره به عبارت دیگر ستون user منحصر به فرد است.
-