PDA

View Full Version : سوال: درخواست اصلاح کد فرم عضویت



wordnet
سه شنبه 25 بهمن 1390, 21:58 عصر
سلام خدمت همه دوستان
بنده تازه با این انجمن و زبان php اشنا شدم یه کد نوشتم که فرم عضویت در دیتابس هست توی اموزش هایی که یاد گرفتم کد در یک صفحه دیگه میزاشتم که وقتی فرم میرفت اون صفحه پیام درست یا نادرست بودن عملیات ثبت نام رو میداد حالا من کد رو اوردم در همون صفحه پر کردن مشخصات و وقتی مشخصات پر میکنم کاملا صحیح اجرا میشه اما چندتا ارور داره همچنین میخوام حالتی باشه که پیام خطا بعد از کلیک روی دکمه ثبت نام نمایش داده بشه
عکس اجرا شده سیستم هم:
http://upimage.ir/images/fnb0ox4vbgnptdzlf70y.gif
به هر حال کد اینه:

<html>
<head>
<meta charset="utf-8">
<title> صفحه عضویت </title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body id="page">
<p id="b1">به سیستم عضویت دفترچه تلفن خوش آمدید</p>
<table id="table" width="400" height="300" border="0" align="center" dir="rtl">
<tr>
<th scope="col"><p id="test">جهت عضویت در سیستم دفترچه تلفن لطفا اطلاعات خواسته شده زیر را به صورت صحیخ پر کنید</p>
<br/>
<br/>
<form method="post" action="">
<p id="test">نام و نام خانوادگی: </p><input name="name" type="text" size="40">
<br/>
<p id="test">نام کاربری دلخواه:</p><input name="username" size="20" type="text">
<br/>
<p id="test">کلمه عبور دلخواه:</p><input name="password" size="20" type="password">
<br/>
<p id="test">ادرس ایمیل شما:</p><input name="email" type="text" size="40">
<br/>
<br/>
<br/>
<input value="عضویت" type="submit" name="sumit">
<br/>

</th>
</tr>
</table>
<p id="copy">کپی رایت</p>
</body>
</html>

<?php
session_start();
if ( isset($_POST['name']) && isset($_POST['username']) & isset($_POST["password"]) & isset($_POST["email"]))
include "class/config.php";
$na=$_POST["name"];
$user=$_POST["username"];
$pass=$_POST["password"];
$mail=$_POST["email"];
if(!$na)
{
die("لطفا یک نام وارد کنید");
}
if(!$user)
{
die("لطفا یک نام کاربری وارد نمائید");
}
if(!$pass)
{
die("لطفا یک کلمه عبور مجاز وارد نمائید");
}
if(!$mail)
{
die("لطفا یک ایمیل معتبر وارد نمائید");
}

if(!preg_match("/[a-zA-Z0-9._-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z\.]+/",$mail))
{
die("لطفا یک ایمیل صحیح وارد نمایید");
}
$pass_hash=md5($pass);
$query= mysql_query ("insert into user (na,user,pass,mail)
values('$na','$user','$pass_hash','$mail');
");
if(mysql_affected_rows()>0)
{
die("شما با موفقیت در سیستم دفترچه تلفن عضو شدید");
}
else
{
die("متاسفانه عملیات ناموفق بود");
}
?>

ممنون میشم اگر راهنمایی بفرمائید.
تشکر

MostafaEs3
سه شنبه 25 بهمن 1390, 22:16 عصر
//////////

djsaeedkhan
سه شنبه 25 بهمن 1390, 22:31 عصر
سلام دوست من
این نمونه رو ببین و ازش استفاده کن
انشاالله به کارت بیاد

MMSHFE
چهارشنبه 26 بهمن 1390, 08:08 صبح
لطفاً از عناوین مناسب برای ایجاد تاپیک استفاده کنید. عنوان تاپیک اصلاح شد. موفق باشید.

wordnet
چهارشنبه 26 بهمن 1390, 11:34 صبح
سلام

از همه دوستان ممنونم
MostafaEs3 عزیز متاسفانه جاگزین کردم ارور ها همچنان هست

دوستان عزیز اگر ممکنه بیشتر راهنمایی کنید

تشکر

wordnet
چهارشنبه 26 بهمن 1390, 12:07 عصر
سلام مجدد

دوستان مشکل ارور با کد دوست عزیز djsaeedkhan حل شد الان کد شد این:



<html>
<head>
<meta charset="utf-8">
<title> صفحه عضویت </title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body id="page">
<p id="b1">به سیستم عضویت دفترچه تلفن خوش آمدید</p>
<table id="table" width="400" height="300" border="0" align="center" dir="rtl">
<tr>
<th scope="col"><p id="test">جهت عضویت در سیستم دفترچه تلفن لطفا اطلاعات خواسته شده زیر را به صورت صحیخ پر کنید</p>
<br/>
<br/>
<form method="post" action="">
<p id="test">نام و نام خانوادگی: </p><input name="name" type="text" size="40">
<br/>
<p id="test">نام کاربری دلخواه:</p><input name="username" size="20" type="text">
<br/>
<p id="test">کلمه عبور دلخواه:</p><input name="password" size="20" type="password">
<br/>
<p id="test">ادرس ایمیل شما:</p><input name="email" type="text" size="40">
<br/>
<br/>
<br/>
<input value="عضویت" type="submit" name="sumit">
<br/>

</th>
</tr>
</table>
<p id="copy">کپی رایت</p>
</body>
</html>
<?php
session_start();
error_reporting(0);
if (isset($_POST['name']) and isset($_POST['username']) and isset($_POST["password"]) and isset($_POST["email"]))include "class/config.php";
$na=$_POST["name"];
$user=$_POST["username"];
$pass=$_POST["password"];
$mail=$_POST["email"];
if(!$na)
{
die("لطفا یک نام وارد کنید");
}
if(!$user)
{
die("لطفا یک نام کاربری وارد نمائید");
}
if(!$pass)
{
die("لطفا یک کلمه عبور مجاز وارد نمائید");
}
if(!$mail)
{
die("لطفا یک ایمیل معتبر وارد نمائید");
}

if(!preg_match("/[a-zA-Z0-9._-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z\.]+/",$mail))
{
die("لطفا یک ایمیل صحیح وارد نمایید");
}
$pass_hash=md5($pass);
$query= mysql_query ("insert into user (na,user,pass,mail)
values('$na','$user','$pass_hash','$mail');
");
if(mysql_affected_rows()>0)
{
die("شما با موفقیت در سیستم دفترچه تلفن عضو شدید");
}
else
{
die("متاسفانه عملیات ناموفق بود");
}
?>



فقط بازم یه مشکل هست که پیغام های خطای فارسی قبل از پر کردن فیلد ها میاد اما من میخوام بعد از پر کردن فیلد ها اگر خطایی هست بده برای بهتر متوجه شدن عکس زیر رو ببینید
http://upimage.ir/images/mpk17pml47ebrb74rqka.gif

ممنون

MMSHFE
چهارشنبه 26 بهمن 1390, 16:32 عصر
این کد رو امتحان کنید:


<?php
session_start();
error_reporting(0);
?>
<!doctype html>
<html>
<head dir="rtl">
<meta charset="utf-8">
<title>صفحه عضویت</title>
<link href="style.css" rel="stylesheet" type="text/css"/>
</head>
<body id="page">
<p id="b1">به سیستم عضویت دفترچه تلفن خوش آمدید</p>
<table border="0px" id="table" width="400px" align="center">
<tr>
<th>
<p id="test">جهت عضویت در سیستم دفترچه تلفن لطفا اطلاعات خواسته شده زیر را به صورت صحیخ پر کنید</p>
<form action="" method="post">
<p id="test">نام و نام خانوادگی:</p><input maxlength="40" name="name" style="width: 150px;" type="text"/>
<p id="test">نام کاربری دلخواه:</p><input maxlength="20" name="username" style="width: 150px;" type="text"/>
<p id="test">کلمه عبور دلخواه:</p><input maxlength="20" name="password" style="width: 150px;" type="password"/>
<p id="test">ادرس ایمیل شما:</p><input maxlength="20" name="email" style="width: 150px;" type="text"/>
<p><input value="عضویت" type="submit" name="sumit"/></p>
</form>
</th>
</tr>
</table>
<p id="copy">کپی رایت</p>
</body>
</html>
<?php
if (isset($_POST['name']) && isset($_POST['username']) && isset($_POST['password']) && isset($_POST['email'])) {
require_once 'class/config.php';
$na = $_POST['name'];
$user = $_POST['username'];
$pass = $_POST['password'];
$mail = $_POST['email'];
if(!$na) {
die('لطفا یک نام وارد کنید');
}
if(!$user) {
die('لطفا یک نام کاربری وارد نمائید');
}
if(!$pass) {
die('لطفا یک کلمه عبور مجاز وارد نمائید');
}
if(!$mail || !preg_match("/[a-zA-Z0-9._-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z\.]+/", $mail)) {
die('لطفا یک ایمیل معتبر وارد نمائید');
}
$pass_hash = md5($pass);
$query = mysql_query ("INSERT INTO `user` (`na`,`user`,`pass`,`mail`) VALUES ('{$na}','{$user}','{$pass_hash}','{$mail}');");
die(mysql_affected_rows() > 0 ? 'شما با موفقیت در سیستم دفترچه تلفن عضو شدید' : 'متاسفانه عملیات ناموفق بود');
}
?>

موفق باشید.

wordnet
چهارشنبه 26 بهمن 1390, 21:10 عصر
اقا دمت گرم درست شد فقط یه بزرگواری کن توضیح بده که مشکل از کجا بود که برای بخشهای دیگه کارمون استفاده کنید واقعا ممنون

MMSHFE
پنج شنبه 27 بهمن 1390, 09:32 صبح
کار خاصی نکردم. فقط همه دستورات پردازش اطلاعات و تولید پیغامهای خطا رو داخل شرط if گذاشتم. دقت کنید که برای شرط if یک بلاک ایجاد کردم. اگه اینکار رو نکنید، فقط اولین دستور بعد از if وابسته به اون شرط/شرایط میشه و بقیه درهرحال اجرا میشن. موفق باشید.

wordnet
دوشنبه 01 اسفند 1390, 19:04 عصر
سلام

دوستان لطفا بگید ایراد کد من چیه که کار نمیکنه!


<?
session_start();
error_reporting(0);

?>
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title> صفحه عضویت </title>
<link href="class/style.css" rel="stylesheet" type="text/css">
</head>
<body id="main">
<p id="welcome">به بخش عضویت خوش امدید</p>
<table width="400" border="1" align="center">
<tr>
<th scope="col">جهت عضویت لطفا تمامی فیلد ها را تکمیل نمایید</th>
<tr>
<th scope="col">
<form action="" method="post">
<a id="text">نام فارسی</a>
<br>
<input name="name" type="text" size="20">
<br>
<a id="text">نام کاربری شما</a>
<br>
<input name="username" type="text" size="20">
<br>
<a id="text">کلمه عبور شما</a>
<br>
<input name="password" type="password" size="20">
<br>
<a id="text">ایمیل شما</a>
<br>
<input name="mail" type="text" size="20">
<br>
<a id="text">بعد از تکمیل عضویت بر دکمه تایید کلیک کنید</a>
<br>
<input type="submit" name="submit" value="تایید و عضویت">
<tr>
<th scope="col">
<?
if (isset($_POST["name"]) and isset($_POST["username"]) and isset($_POST["password"]) and isset($_POST["mail"]));
{
require_once 'class/config.php';
$name=$_POST["name"];
$username=$_POST["username"];
$password=$_POST["password"];
$mail=$_POST["mail"];
if(!$name)
{
die("لطفا نام فارسی خود را وارد کنید");
}
if(!$username)
{
die("لطفا نام کاربری دلخواه وارد کنید");
}
if(!$password)
{
die("نام پسورد دلخواه وارد کنید");
}
if(!$mail)
{
die("لطفا ایمیل دلخواه وارد کنید");
}
$query = mysql_query ("INSERT INTO 'user' ('na','user','pass','mail')
VALUES ('{$name}','{$username}','{$password}','{$mail}');");
die(mysql_affected_rows() > 0 ? 'شما با موفقیت در سیستم دفترچه تلفن عضو شدید' : 'متاسفانه عملیات ناموفق بود');
}

?>
</th>
</tr>

</th>
</tr>
</tr>
</table>
</body>
</html>

lady64
دوشنبه 01 اسفند 1390, 20:35 عصر
این کد




$query = mysql_query ("INSERT INTO 'user' ('na','user','pass','mail')VALUES ('{$name}','{$username}','{$password}','{$mail}');


من خودم هیچ وقت اسم جدول و فیلد ها را درون ' ' نمیزارم.امتحان کنید.ضرر نداره.

wordnet
دوشنبه 01 اسفند 1390, 21:02 عصر
پس توی چی بزارم؟ این خوبه " "

lady64
دوشنبه 01 اسفند 1390, 21:11 عصر
پس توی چی بزارم؟ این خوبه " "
من کدهای insert ام رو این طور مینویسم:



$qry="INSERT INTO person(User,Pass,Post,Level) VALUES('$user','$pass','$postname','$post')";



چون تا بحال به این صورت ندیده بودم ، اظهار نظر کردم ، شاید هم برای شما درسته.
در ضمن تگ شروع php ، با این جواب میده که اینو رعایت کنید.

<?php
هرچند توی سوالات تستی php ، این هم جزئ جواب ها هست
<?
ولی در عمل تا جایی که میدونم جواب نمیده

wordnet
سه شنبه 02 اسفند 1390, 20:42 عصر
واقعا ممنون حل شد مورد <?php بود
البته کد کوئری هم اینطور کردم


$query = mysql_query ("INSERT INTO user (na,user,pass,mail)
VALUES('$name','$username','$password','$mail');
");

MMSHFE
سه شنبه 02 اسفند 1390, 20:48 عصر
اگه بخواین با ?> هم کار کنید، باید توی php.ini خط زیر رو تغییر بدین:
short_open_tag = Off
و بجای Off مقدار On رو بگذارین و Apache رو Restart کنید. البته پیشنهاد میکنم از همون حالت استاندارد یعنی php?> استفاده کنید.
موفق باشید.

wordnet
سه شنبه 02 اسفند 1390, 20:51 عصر
اقا جسارتا الان سیستم عضویت من کاملا سالمه فارسی هم اینسرت میکنه فقط پیغام قبل تایید فرم نمایش داده میشه

یعنی هنوز فرم ارسال نشده میگه
لطفا نام فارسی خود را وارد کنید

*البته واقعا شرمنده شما اینو یه بار برام حل کردید اما من برای تمرین از 0 دوباره کدهارو نوشتم هر چقدر تلاش کردم فرق کد شمارو با کد خودم بفهمم نشد لطفا اینو برام رفع کنید و مختصر توضیح واقعا شرمنده

اینم کد


<?php
session_start();
error_reporting(0);

?>
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title> صفحه عضویت </title>
<link href="class/style.css" rel="stylesheet" type="text/css">
</head>
<body id="main">
<p id="welcome">به بخش عضویت خوش امدید</p>
<table width="400" border="1" align="center">
<tr>
<th scope="col">جهت عضویت لطفا تمامی فیلد ها را تکمیل نمایید</th>
<tr>
<th scope="col">
<form action="" method="post">
<a id="text">نام فارسی</a>
<br>
<input name="name" type="text" size="20">
<br>
<a id="text">نام کاربری شما</a>
<br>
<input name="username" type="text" size="20">
<br>
<a id="text">کلمه عبور شما</a>
<br>
<input name="password" type="password" size="20">
<br>
<a id="text">ایمیل شما</a>
<br>
<input name="mail" type="text" size="20">
<br>
<a id="text">بعد از تکمیل عضویت بر دکمه تایید کلیک کنید</a>
<br>
<input type="submit" name="submit" value="تایید و عضویت">
<tr>
<th scope="col">
<?php
if (isset($_POST["name"]) and isset($_POST["username"]) and isset($_POST["password"]) and isset($_POST["mail"]));
{
require_once 'class/config.php';
$name=$_POST["name"];
$username=$_POST["username"];
$password=$_POST["password"];
$mail=$_POST["mail"];
if(!$name)
{
die("لطفا نام فارسی خود را وارد کنید");
}
if(!$username)
{
die("لطفا نام کاربری دلخواه وارد کنید");
}
if(!$password)
{
die("نام پسورد دلخواه وارد کنید");
}
if(!$mail)
{
die("لطفا ایمیل دلخواه وارد کنید");
}
$query = mysql_query ("INSERT INTO user (na,user,pass,mail)
VALUES('$name','$username','$password','$mail');
");
die(mysql_affected_rows() > 0 ? 'شما با موفقیت در سیستم دفترچه تلفن عضو شدید' : 'متاسفانه عملیات ناموفق بود');
}

?>
</th>
</tr>

</th>
</tr>
</tr>
</table>
</body>
</html>

MMSHFE
سه شنبه 02 اسفند 1390, 21:52 عصر
دوست عزیز، اون ; که آخر شرط if گذاشتین (توی خط 43) باعث میشه که شرط if همونجا تمام بشه. درنتیجه دستورات بعدی هیچ ارتباطی به if ندارن و درهرحال اجرا میشن و از اونجا که در نمایش اولیه فرم لاگین، هنوز آرایه POST_$ پر نشده، پیغام خطا ظاهر میشه. بنابراین، باید ; انتهای خط 43 رو حذف کنید تا کد به درستی کار کنه. موفق باشید.

wordnet
سه شنبه 02 اسفند 1390, 22:14 عصر
بابا ایول اقا اسم شریفت چیه؟MMSHFE
من حسابی مدیون شمام واقعا این چند وقته کمک هاتون باعث شد من تو php خیلی پیشرفت کنم نمیدونم چی بگم فقط اخر مدیری دمت گرم:بوس:

MMSHFE
سه شنبه 02 اسفند 1390, 22:16 عصر
ممنون از نظر لطفتون. دوستام منو «محمد» صدا میکنن. موفق باشید.

wordnet
سه شنبه 02 اسفند 1390, 22:21 عصر
اقا محمد دست گلت دردنکنه واقعا من تابستون سایتتون رو دیده بودم یه دور هم مقالاتتون رو خوندم اما ادامه ندادم چون جایی نبود و کسی پاسخ بده به مشکلاتم اما الان اینجا شما این چند هفته مارو ساپورت کردی به جرات میتونم بگم عاملی برای علاقه و پیشرفت من در php بودید واقعا ممنون.