کمک: ایجاد فرم با کد رهگیری

binboy

Member
راهنمایی کنید ؟؟؟؟؟؟؟؟؟؟؟؟؟

سلام
اساتید گرامی
تازه گیها با زبان php آشنا شدم و بعد چند سوایی مطالعه به مواردی ارزشمند در حد مبتدی دست پیدا کردم از شما عزیزان می خواهم تا مرا درباره ایجاد فرمی که در دیتا بیس ذخیره می شود و در انتها با کلیک روی دکمه ثبت یکی از فیلد های پر شده مثل شماره همراه به عنوان کد رهگیری به آن مشخصاتی که در فرم ثبت گردیده است اختصاص داده شود، تا فرد خود بتواند به مطالبی که به او اختصاص داده شده دست پیدا کند، یاری فرمایید.
برای اینکه این فیلد شماره همراه به عنوان شماره رهگیری آن فرد برای دیدن مشخصاتش باشد چه باید کرد.
آیا تابعی وجود دارد؟
اگر نه راهنمایی کنید.
با تشکر
 
آخرین ویرایش:

Army.Hidden

Active Member
با سلام

دادن شماره تلفن بجاي كد رهگيره به كاربر رو من پيشنهاد نمي كنم ، به دليل اين كه خود اين مي تونيد يه اشكال توي برنامه به وجود بياره.
پيشنهاد من اينه كه شما توسط توابعي مثل Time و ... يك معيار ثابت رو از زمان ثبت نام بدست بياريد بعد با چند روش يك كد بدست بياريد براي مثال اين رو ببينيد :
http://irangrp.com/?option=contact
اگر بخوايد مي تونم كد آماده رو بهتون بدم شما تغييرش يديد براي خودتون

اگر ديدي كامل توضيح ندادم بگو تا كاملتر توضيح بدم.
 

binboy

Member
با سلام

دادن شماره تلفن بجاي كد رهگيره به كاربر رو من پيشنهاد نمي كنم ، به دليل اين كه خود اين مي تونيد يه اشكال توي برنامه به وجود بياره.
پيشنهاد من اينه كه شما توسط توابعي مثل time و ... يك معيار ثابت رو از زمان ثبت نام بدست بياريد بعد با چند روش يك كد بدست بياريد براي مثال اين رو ببينيد :
http://irangrp.com/?option=contact
اگر بخوايد مي تونم كد آماده رو بهتون بدم شما تغييرش يديد براي خودتون

اگر ديدي كامل توضيح ندادم بگو تا كاملتر توضيح بدم.


سلام
اگر زحمتی نیست کد را با توضیح کامل بدید.
با تشکر
 

Army.Hidden

Active Member
كد پيشنهادي و كوتاه من اين هست :
PHP:
<?php
$char=15;
$code=substr(md5(time()-rand(100,200)),$char);
echo $code;
?>
خط اول : تعداد حروف و عدادي كه قرار است به خروجي ارسال شود
خط دوم : ساخت كد رهگيري ( اناليزش با خودت :wink: )
خط سوم : دادن كد رهگيري به خروجي

----------------
اين كد به هيچ عنوان كدرهگيري تكراري نمي سازه.:)
 
سلام . با اجازه من هم یه توضیح کلی می دم :
بعد از این که کد رهگیری رو از کاربر گرفتی یه کوئری باید بفرستی .

PHP:
$code_rahgiri = $_post['code_rahgiri'];
$select_info   = mysql_query("SELECT * FROM `your table` WHERE `code`='$code_rahgiri';");
$fetch_info    = mysql_fetch_array($select_info);
echo    $fetch_info["your fields"];
 

Army.Hidden

Active Member
البته روش هاي مختلفي براي انجام اين كار هست كه اين يه نمونه كوچيك هست.
يه پيشنهاد مي كنم كه هيچ موقع از كد هاي ديگران استفاده نكن سعي كن خودت اسكريپت رو طراحي كني.
 

binboy

Member
ضمن تشکر
دوستان من یک فرم دارم می خوام بعد پر شدن وقتی روی دکمه ثبت کلیک شد یک کد رهگیری داده بشه که دوستمون زحمت کشیدن و آن تابع را معرفی کردن(دستت درد نکنه) حالا من با این تابع چیکار باید بکنم؟!
کجای فرم باید بزارم ؟
چجوری یک مشخصات را به یک کد اختصاص بدم؟
چجوری فرد با زدن این کد به یکسری اطلاعاتی که ما بهش اختصاص میدیم دست پیدا کنه؟
البته اون یکی دوستمونم یک اشاره ای داشتن (دستتون درد نکنه) ولی توضیح کاملترشو زحمت بکشید.
با تشکر
 
آخرین ویرایش:
ميتوني از input hidden ها استفاده كني و يا هنگام ارسال اطلاعات به ديتابيس و جدول اون ها رو مقدار دهي كني...
 

Army.Hidden

Active Member
شما مي بايست وقتي كه دارد بانك اطلاعاتي رو طراحي مي كنيد يك فيلد يا Column براي كد رهگيري در نظر بگيريد.
الگريتم كار اينجوريه :
وقتي كاربر فرم رو پر كرد و به سرور ارسال كرد و اعتبار سنجي انجام شد قبل از ثبت اطلاعات در بانك اطلاعاتي شما ميبايست كد رهگيري رو توليد كنيد و در بانك اطلاعاتي ذخيره كنيد و پس از ذخيره كردن كد رهگيري رو نمايش ميديد
براي جستوجو هم از همون فيلد كد رهگيري استفاده كنيد
 

Allahparast

Member
قبلا بحث شده راه بهتری هم هست که بیاید یک فانکشن واسه ساخت کد درست کنید و در دیتابیس چک کنید اگر بود خروجی کد رو بده اگر نبود دوباره کد بسازه :
ra
PHP:
function Genterator(){
   $Code_Number = rand(0,14);
    if(@mysql_query("Select Count(*) from `Tbl_name` where `Cnumber`= '$Code_Number' ") <=1){
      Genterator();
    }else return $Code_Number;
}
echo Genterator();
جواب بعدی : برای استفاده می تونید چند مرحله ای کنید کارتون رو پس از صحت ارسال به دیتابیس کد رو نمایش بدید در ضمن حتما باید از کد امنیتی استفاده کنید .

موفق باشی :rose:
 
آخرین ویرایش:

binboy

Member
سلام
خدمت دوستان
کدهایی رو که نوشتم را براتون می زارم شاید اینطوری بهتر بتونید کمکم کنید. ولی چند تا سوال در آخر ازتون می پرسم.

این همون فرمی است که صحبتش را کرده بودیم.

کد صحفه خود فرم:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
        <link rel="stylesheet" type="text/css" href="css/reset-fonts.css">
		<link type="text/css" rel="stylesheet" href="css/zend.css">
		<link type="text/css" rel="stylesheet" href="css/this.css">
        <link type="text/css" rel="stylesheet" href="css/stayle.css">
		<script type="text/javascript" src="js/mootools.js"></script>
		<script type="text/javascript" src="js/shCore.js"></script>
		<script type="text/javascript" src="js/fValidator.js"></script>
<script type="text/javascript">
	
window.addEvent("domready", function() {
	//new Accordion($$(".accordion_toggler"), $$(".accordion_content"));

	dp.SyntaxHighlighter.HighlightAll("usage");

	var exValidatorA = new fValidator("exA");
});
	
		</script>
	</head><body>
		<div id="container">
			<div id="container_hd"></div>
			<div id="container_bd">



	<dl id="accordionExample" class="accordion">
		<dd class="accordion_content">
			<form id="exA" class="fValidator-form" method="post" action="save.php">
				<fieldset>
					<legend>فرم مشتری</legend>

<br  />
<label for="exA_name" id="titel">نام:</label>
<input id="exA_name"  style="width: 200px;float: left;padding: 2px;font: normal 11px Tahoma, Geneva, sans-serif;margin: 5px 0;background-color: rgb(255, 255, 204);border-color: rgb(204, 204, 0)" class="fValidate['required']" name="name" type="text">
<br  />
<label for="exA_lastname" id="titel">نام خانوادگی:</label>
<input id="exA_lastname"  style="width: 200px;float: left;padding: 2px;font: normal 11px Tahoma, Geneva, sans-serif;margin: 5px 0;background-color: rgb(255, 255, 204);border-color: rgb(204, 204, 0)" class="fValidate['required']" name="lastname" type="text">
<br  />
<label for="exA_phone" id="titel">تلفن ثابت:</label>
<input id="exA_phone"  style="width: 200px;float: left;padding: 2px;font: normal 11px Tahoma, Geneva, sans-serif;margin: 5px 0;background-color: rgb(255, 255, 204);border-color: rgb(204, 204, 0)" class="fValidate['required']" name="phone" type="text" />
<br  />
<label for="exA_mobile" id="titel">تلفن همرا:</label>
<input id="exA_mobile"  style="width: 200px;float: left;padding: 2px;font: normal 11px Tahoma, Geneva, sans-serif;margin: 5px 0;background-color: rgb(255, 255, 204);border-color: rgb(204, 204, 0)" class="fValidate['required']" name="mobile" type="text" />
<br  />
<label for="exA_address" id="titel">آدرس:</label>
<input id="exA_address"  style="width: 200px;float: left;padding: 2px;font: normal 11px Tahoma, Geneva, sans-serif;margin: 5px 0;background-color: rgb(255, 255, 204);border-color: rgb(204, 204, 0)" class="fValidate['required']" name="address" type="text" />
<br  />
<label for="exA_loin" id="titel">دور کمر:</label>
<input id="exA_loin"  style="width: 200px;float: left;padding: 2px;font: normal 11px Tahoma, Geneva, sans-serif;margin: 5px 0;background-color: rgb(255, 255, 204);border-color: rgb(204, 204, 0)" class="fValidate['required']" name="loin" type="text" />
<br  />
<label for="exA_btc" id="titel">دور باسن:</label>
<input id="exA_btc"  style="width: 200px;float: left;padding: 2px;font: normal 11px Tahoma, Geneva, sans-serif;margin: 5px 0;background-color: rgb(255, 255, 204);border-color: rgb(204, 204, 0)" class="fValidate['required']" name="btc" type="text" />
<br  />
<label for="exA_shoulder" id="titel">سرشانه:</label>
<input id="exA_shoulder"  style="width: 200px;float: left;padding: 2px;font: normal 11px Tahoma, Geneva, sans-serif;margin: 5px 0;background-color: rgb(255, 255, 204);border-color: rgb(204, 204, 0)" class="fValidate['required']" name="shoulder" type="text" />
<br  />
<label for="exA_stature" id="titel">قد:</label>
<input id="exA_stature"  style="width: 200px;float: left;padding: 2px;font: normal 11px Tahoma, Geneva, sans-serif;margin: 5px 0;background-color: rgb(255, 255, 204);border-color: rgb(204, 204, 0)" class="fValidate['required']" name="stature" type="text" />
<br  />
<label for="exA_abdomen" id="titel">دور شکم:</label>
<input id="exA_abdomen"  style="width: 200px;float: left;padding: 2px;font: normal 11px Tahoma, Geneva, sans-serif;margin: 5px 0;background-color: rgb(255, 255, 204);border-color: rgb(204, 204, 0)" class="fValidate['required']" name="abdomen" type="text" />
<br  />
<label for="exA_dmpa" id="titel">دمپا:</label>
<input id="exA_dmpa"  style="width: 200px;float: left;padding: 2px;font: normal 11px Tahoma, Geneva, sans-serif;margin: 5px 0;background-color: rgb(255, 255, 204);border-color: rgb(204, 204, 0)" class="fValidate['required']" name="dmpa" type="text" />
<br  />
<label for="exA_austin" id="titel">آستین:</label>
<input id="exA_austin"  style="width: 200px;float: left;padding: 2px;font: normal 11px Tahoma, Geneva, sans-serif;margin: 5px 0;background-color: rgb(255, 255, 204);border-color: rgb(204, 204, 0)" class="fValidate['required']" name="austin" type="text" />
<br  />
<label for="exA_other" id="titel">موراد دیگر:</label>
<input id="exA_other"  style="width: 200px;float: left;padding: 2px;font: normal 11px Tahoma, Geneva, sans-serif;margin: 5px 0;background-color: rgb(255, 255, 204);border-color: rgb(204, 204, 0)" class="fValidate['required']" name="other" type="text" />
<br  />
<input id="exA_submit" value="ثبت" 
type="submit">
<input value="مجدد" type="reset">
				</fieldset>
			</form>
			<br>
		</dd>

	</body></html>

و اینم کدهایی که انتقال دهنده به سرور:

PHP:
<?php
	include ("config.php");
?>
<?php
//retrieve form variables
$name = $_POST['name'];
$lastname = $_POST['lastname'];
$phone = $_POST['phone'];
$mobile = $_POST['mobile'];
$address = $_POST['address'];
$loin = $_POST['loin'];
$btc = $_POST['btc'];
$shoulder = $_POST['shoulder'];
$stature = $_POST['stature'];
$abdomen = $_POST['abdomen'];
$dmpa = $_POST['dmpa'];
$austin = $_POST['austin'];
$other = $_POST['other'];
//connet to MYSQL server
$c="insert into formcu
(name, lastname, phone, mobile, address ,loin, btc, shoulder, stature, abdomen, dmpa, austin, other,) values
('".$name."', '".$lastname."', '".$phone."', '".$mobile."', '".$address."' '".$loin."', '".$btc."', '".$shoulder."', '".$stature."', '".$abdomen."', '".$dmpa."', '".$austin."', '".$other."', )";
 $r=mysql_query($c);
                if($r){
                	echo'<b> با موفقيت ذخيره شد</b>';
					}
?>

حالا مشکلات:
1. بعد پر کردن فرم ها نمی دونم چرا به دیتا بیس انتقاد داده نمی شن؟
2. و بعد پر کردن فرم برای دادن کد رهگیری این کد را باید کجای صحفه بریزم که هم کد را بده و هم کاربر بعدا بتونه باهاش به اطلاعاتی که ما بهش میدیم دست پیدا کنه؟
با تشکر
 

Army.Hidden

Active Member
1- فايل كانفيگ رو چك كن ببين مشكل از ارتباط نيست
2- يه كلومن يا فيلد براي ذخيره سازي كدرهگيري به تيبلت اضافه كن
3- به هيچ عنوان اطلاعات رو اينجوري وارد نكن يه حفره امنيتي به حساب مياد ( مباحث Sql Injection رو بخون خواستي مقاله دارم )
4- قبل از Insert كدرهگيري رو توليد كن كه داخل اون فيلد يا كلومن مورد نظر قرار بدي
 

niman2d

New Member
1- فايل كانفيگ رو چك كن ببين مشكل از ارتباط نيست
2- يه كلومن يا فيلد براي ذخيره سازي كدرهگيري به تيبلت اضافه كن
3- به هيچ عنوان اطلاعات رو اينجوري وارد نكن يه حفره امنيتي به حساب مياد ( مباحث Sql Injection رو بخون خواستي مقاله دارم )
4- قبل از Insert كدرهگيري رو توليد كن كه داخل اون فيلد يا كلومن مورد نظر قرار بدي
سلام ، خسته نباشید
من هم دقیقا مشکل SQL INJECTION دارم ، ممنون میشم اگر مقاله دارید و یا کمی راهنمایی کنید . ..

سعی کردم که یک فانکشن ساده بنویسم که در صورت وجود ، \ بذاره و یا replace کنه با space اما نشد . .
توابعی هم که پیدا کردم جواب ندادن . . .


در حقیقت ، یوزر 40 50 تا فیلد رو که پر میکنه ، اطلاعت داخل متغیر ریخته نمیشه ، مستقیم با استفاده از یک فانکشن ، به دیتابیس ریخته میشه ،
حالا مشکل اینجاسن که میخوام قبل فراخونی فانکشن مربوط به insert ، یک فانکشن دیگه فراخونی بشه که اطلاعات رو چک کنه . . . قضیه تا اینجا خوبه ، اما مشکل این هست که چون ورودی ها رو در متغیر نمیریزم به صورت array میشه ، حالا با array برای چ کردن چیکار باید بکنم ؟




و مقاله ای که فرمودید هم ممنون میشم لطف کنید .

سپاس
 

Army.Hidden

Active Member
سلام دوست عزيز
قبلا توي گروه امنيتي آريا بودم يه مقاله براي آموزش و جلوگيري حملات Sql Inj نوشتم.( البته اين مقاله چند غلط تايپي داره :green:)
فكر كنم مشكلت رو حل كنه.

در آخر مقاله روش هاي مقابله با اين نوع حملات رو حتما بخوان.

http://zac002.persiangig.com/SqlInj.rar
 

niman2d

New Member
سلام دوست عزيز
قبلا توي گروه امنيتي آريا بودم يه مقاله براي آموزش و جلوگيري حملات sql inj نوشتم.( البته اين مقاله چند غلط تايپي داره :green:)
فكر كنم مشكلت رو حل كنه.

در آخر مقاله روش هاي مقابله با اين نوع حملات رو حتما بخوان.

http://zac002.persiangig.com/sqlinj.rar

سلام ،
ممنونم ، دانلود کردم ویدئو بود :-؟
تصویری بود :-؟
پی دی اف نبود ، میشه دوباره چک کنی ؟

ممنونم ، یک دنیا
سپاس
 

Milad

Well-Known Member
سلام ،
ممنونم ، دانلود کردم ویدئو بود :-؟
تصویری بود :-؟
پی دی اف نبود ، میشه دوباره چک کنی ؟

ممنونم ، یک دنیا
سپاس

تاييد ميشه ، توي ويدئو روش حمله آموزش داده شده بود :) ، منتظر مقالتون هستم :wink:
 

niman2d

New Member
آقا مجددا سلام ،
خسته نباشید ،

من کد رهگیری رو اینجوری ایجاد کردم . . .

md5(substr(md5($_POST['idnumber']+rand(0,999)+2*rand(0,99)+time()),$shenasname))

فکر میکنم خیلی پیچوندمش ، اما برای راحتی خیاله :دی
بعد این کد رو توی سشن میریزم و در صفحه آخر به کاربر نشون میدم ،
میخواستم ببینم این روش خوب هست یا نه ؟
و در آخر هم نشست رو از بین میبرم . . ( بعد از نمایش به کاربر )
 

Milad

Well-Known Member
به نظر من براي توليد كدرهگيري از كدي كه دوستمون Allahparast قرار دادند استفاده كنيد :

PHP:
function Genterator(){
   $Code_Number = rand(0,14);
    if(@mysql_query("Select Count(*) from `Tbl_name` where `Cnumber`= '$Code_Number' ") <=1){
      Genterator();
    }else return $Code_Number;
}
echo Genterator();

استفاده از SESSION هم باز از نظر من خوبه ... :green:
 

amirepsilon

Active Member
سلام
البته میتونی مثلا کلمه binboy رو به کد مورد نظر اضافه کنید و بعد اونو کد کنی !
 

جدیدترین ارسال ها

بالا