ورود

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : درخواست راهنمایی در ایجاد فرم ثبت نام php



sayeh63
December 16th, 2013, 18:16
سلام.
دوستان من یک تازه کار در زمینه 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;

}






?>



حالا اگر امکان داره راهنماییم کنید که کجای کدنویسیم ایراد داره که ثبت نام خطا میده و انجام نمیشه. ممنونم.

folletto
December 16th, 2013, 19:55
خطایی که php میده رو هم مینوشتید بد نبودا!

sayeh63
December 16th, 2013, 21:40
خطایی خاصی نمیده. طبق همون کدی که خودم نوشتم در صورت ثبت نام نشدن مینویسه خطای سیستمی.

$result = registerUser ($username,$password,$email,$phone);

if ($result)
{

echo 'ثبت نام شما با موفقیت انجام شد';
}else
{

echo '<b style="color: red">خطای سیستمی</b>';
}

folletto
December 16th, 2013, 21:58
خط زیر رو

echo '<b style="color: red">خطای سیستمی</b>';
با این جایگزین کنید. بعد ببینید چه خطایی میده.


echo '<b style="color: red">خطای سیستمی</b> '.mysql_error();

sayeh63
December 17th, 2013, 09:51
چه خوب مشکل رو نوشت.
این رو مینویسه:
خطای سیستمی Column 'id' cannot be null

من رفتم توی دیتابیس. جدول یوزرز رو دیدم. من اینطوری ساختم. نمیدونم مشکل از کجاشه چون اینطوری به ما یاد دادن که برای آی دی primery باشه و attributes هم روی unsigned باشه. تیک A-I رو هم زدم.

17322

sayeh63
December 17th, 2013, 09:53
چه خوب مشکل رو نوشت.
این رو مینویسه:
خطای سیستمی Column 'id' cannot be null

من رفتم توی دیتابیس. جدول یوزرز رو دیدم. من اینطوری ساختم. نمیدونم مشکل از کجاشه چون اینطوری به ما یاد دادن که برای آی دی primery باشه و attributes هم روی unsigned باشه. تیک A-I رو هم زدم.

http://www.webhostingtalk.ir/attachments/f148/17322-%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA-%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%DB%8C-%D8%AF%D8%B1-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D9%81%D8%B1%D9%85-%D8%AB%D8%A8%D8%AA-%D9%86%D8%A7%D9%85-php-1-jpg

sayeh63
December 17th, 2013, 10:00
مشکل حل شد. دوست عزیز خیلی ممنونم که اون کد رو نوشتی تا من بفهمم مشکل از کجاست. یک بار دیگه id رو ساختم و A-I رو فعال کردم و درست شد. ممنونم.

من توی ساخت این اسکریپت در آینده حتما بازم به مشکل میخورم. امیدوارم دوستان باز هم همینجا به سوالاتم جواب بدن. تشکر

folletto
December 17th, 2013, 10:33
چند تا نکته که بد نیست رعایت کنید:

- به جای mysql از mysqli یا pdo استفاده کنید.
- اطلاعات ورودی رو قبل از نوشتن در دیتابیس ولیدیت کنید. (مثلا از نظر ماکزیمم کاراکتر. صحیح بودن الگوی ایمیل، تلفن و ...)
- خاصیت نام ستون username رو unique بذارید. و احیانا همینطور email بسته به نیاز؟
و...

sayeh63
December 18th, 2013, 10:29
بسیار ممنونم از نکاتی که فرمودید.
خواهش میکنم باز هم از این نکات ریز و مهم بهم یاد بدید.

گه میشه درباره ولیدیت کردن کاراکتر ها بیشتر توضیح بدید. چطوری اطلاعات ورودی به دیتابیس رو ولیدیت کنم؟

و سوال آخرم اینکه unique کردن چه کاری انجام میده و از کجا بفهمم نیاز هست که ستونی رو unique کنم؟

تشکر

woods_f
December 18th, 2013, 12:26
برای
ولیدیت کردن کاراکتر ها می توانید از تابع addslashes در php یا
توابع خود mysql استفاده کنید که کاراکتر های خواص را از بین می برد مانند:
1) mysql_escape_string
2) mysql_real_escape_string
و در جوای سوال unique کردن باید بگم که در table که username های شما قرار دارد اگه ستون user دارای خاصیت unique باشد اجازه نمی دهد user تکراری در ستون از table که unique است قرار بگیره به عبارت دیگر ستون user منحصر به فرد است.

sayeh63
December 30th, 2013, 10:17
دوستان من سوال دیگه ای دارم .

من فرم ثبت نام رو درست کردم. و مشکلی هم نداره فقط از نظر ضاهری ایراد داره. کادر های input text که ایجاد شده بسیار بزرگ و کشیده هستند در حدی که یک اسکرول افقی هم ایجاد شده. من حتی با تغییراتی توی style.css اسکرول افقی رو برداشتم ولی هنوز کادر همون سایز هست و بسیار بزرگه.
کجای فایل style.css رو باید تغییر بدم؟ یا چیکار باید بکنم که درست بشه. من قالب رو توی برنامه artieteer درست کردم. حتی توی یکی از block های کناری یه فرم ورود درست کردم باز هم کادرش عین فرم ثبت نام که توی body قرار داره بزرگ هست.
ممنون میشم راهنماییم کنید.