برگزیده های پرشین تولز

اشکالات کد ؟

byvafa

کاربر تازه وارد
تاریخ عضویت
7 آپریل 2005
نوشته‌ها
175
لایک‌ها
0
آیا این کد ساده که اطلاعات رو از یه فروم به اکریپت php ارسال میکنه اشکالی داره که جواب نمیده ؟
کد فرم html :
کد:
<html>
<head>
<title>HTML Form</title>
</head>
</body>
<form action="handleform.php" method=post>
First name <input type=text name="firstname" size=20><br>
Last Name <input type=text name="lastname" size=40><br>
E-mail Address <input type=text name="email" size=60><br>
Comments <textarea name="comments" rows=5 cols=40></textarea><br>
<input type=submit value=post name=submit>&nbsp
<input type=reset name=reset value=reset>
</form>
</body>
</html>

کد اسکریپت php :

کد:
<html>
<head>
<title>Form Relts</title>
</head>
<body>
<?php
echo "your First Name is : $firstname. <br>\n";
echo "your Last Name is : $lastname <br>\n";
echo "your e-mail address is : $email <br>\n";
echo "This is what you had to say : $comments <br>\n";
?>
</body>
</html>

با php نسخه های 4 و 5 امتحان کردم :(

اشکالش کجاست ؟
 

PersianPC

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
9 فوریه 2005
نوشته‌ها
583
لایک‌ها
1
سن
34
محل سکونت
Tehran
مشکل شما مربوط به رجیستر گلوبال هست.
میتونید به جای نام متغیر ها از
PHP:
 $_POST['feildname']
استفاده کنید.
برای مثال برای نمایش اطلاعات فیلد firstname ، باید از کد
PHP:
 $_POST['firstname']
استفاده کنید.
 

sama_sally

Registered User
تاریخ عضویت
5 آپریل 2005
نوشته‌ها
2,598
لایک‌ها
1
سن
35
محل سکونت
Essen, Deutschland
اشکالش تابلو ترین اشکال دنیاس!!!!
توی نسخه 4.2 به بعد register_globals روی off تنظیم شده
در صورتی که register_globals فعال نباشه شما نمیتونی بطور مستقیم متغیر هایی رو که از صفحات قبلی به صورت get یا پست و یا همچنین به صورت cookie و session ارسال میشن رو توی صفحه ت بکار ببری.
این متغیر ها توی چند تا آرایه ی انجمنی سیستمی تعریف میشن و مثل متغیری که از صفحه قبل از طریق فرم ارسال شده رو باید اینجوری توی صفحه بعد بکار برد:
PHP:
<?php
echo $_POST['name']; //به جای $name
//یا...
echo $HTTP_POST_VARS['name']; //بجای $name
?>
متغیر های انجمنی موجود:
PHP:
<?php
//برای متد ارسال GET
$_GET['variable_name']; /* or */ $HTTP_GET_VARS['variable_name'];
//برای متد ارسال POST 
$_POST['variable_name']; /* or */ HTTP_POST_VARS['variable_name'];
//برای COOKIE
$_COOKIE['variable_name']; /* or */ HTTP_COOKIE_VARS['variable_name'];
//برای SESSIOn:
$_SESSION['variable_name']; /* or */ HTTP_SESSION_VARS['variable_name'];
?>
متد POST بیشتر مربوط به فرم ها هست برای مثل توی کد خودت این خطو ببین:
HTML:
<form action="handleform.php" method=post>
میبینی که نوشتی POST ؛ مقادیر POST به صورت مخفی به صفحات دیگه ارسال میشن
ولی میتونستی اینو بنویسی که امن نیست:
HTML:
<form action="handleform.php" method=get>
اونوقت اطلاعات فرم از طریق آدرس منتقل میشه یا مثل این :
کد:
http://site.com/index.php?mod=addnews
در این شیوه ها متد ارسال GET هست.

کوکی و سشن (جلسه) به اینجا مربوط نمیشن.


پس راه حال تو این هست که تموم متغیرهاتو توی آرایه انجمنی قرار بدی:
PHP:
<html>
<head>
<title>Form Relts</title>
</head>
<body>
<?php
echo "your First Name is : $_POST['firstname'] . <br>\n";
echo "your Last Name is : $_POST['lastname'] . <br>\n";
echo "your e-mail address is : $_POST['email'] . <br>\n";
echo "This is what you had to say : $_POST['comments'] . <br>\n";
?>
</body>
</html>
یا اینکه:
PHP:
<html>
<head>
<title>Form Relts</title>
</head>
<body>
<?php
$firstname = $_POST['firstname'];
$lastname = $POST['lastname'];
$email = $_POST['email'];
$comments = $_POST['comments'];

echo "your First Name is : $firstname. <br>\n";
echo "your Last Name is : $lastname <br>\n";
echo "your e-mail address is : $email <br>\n";
echo "This is what you had to say : $comments <br>\n";
?>
</body>
</html>
و یا :

PHP:
<?php
if ($HTTP_SESSION_VARS) {extract($HTTP_SESSION_VARS, EXTR_SKIP);}
if ($_SESSION)          {extract($_SESSION, EXTR_SKIP);}
if ($HTTP_COOKIE_VARS)  {extract($HTTP_COOKIE_VARS, EXTR_SKIP);}
if ($_COOKIE)           {extract($_COOKIE, EXTR_SKIP);}
if ($HTTP_POST_VARS)    {extract($HTTP_POST_VARS, EXTR_SKIP);}
if ($_POST)             {extract($_POST, EXTR_SKIP);}
if ($HTTP_GET_VARS)     {extract($HTTP_GET_VARS, EXTR_SKIP);}
if ($_GET)              {extract($_GET, EXTR_SKIP);}
if ($HTTP_ENV_VARS)     {extract($HTTP_ENV_VARS, EXTR_SKIP);}
if ($_ENV)              {extract($_ENV, EXTR_SKIP);}


if($PHP_SELF == ""){ $PHP_SELF = $_SERVER["PHP_SELF"]; }
?>
<html>
<head>
<title>Form Relts</title>
</head>
<body>
<?php
echo "your First Name is : $firstname. <br>\n";
echo "your Last Name is : $lastname <br>\n";
echo "your e-mail address is : $email <br>\n";
echo "This is what you had to say : $comments <br>\n";
?>
</body>
</html>


در اینجا هر سه روش کار میکنه؛ روش اول و دووم کاربرد داره برای تو ولی مورد سوم برای سایتهای بزرگ که سخته توشون از این همه متغیر انجمنی استفاده کرد.



امیدوارم موثر بوده باشه!!!
 

artin

کاربر تازه وارد
تاریخ عضویت
19 می 2004
نوشته‌ها
2,114
لایک‌ها
2
برو بچ PHP کار دیگه رویه هر چی فردین و بهروز وثوقیه کم کردن

:rolleyes:
 

byvafa

کاربر تازه وارد
تاریخ عضویت
7 آپریل 2005
نوشته‌ها
175
لایک‌ها
0
به نقل از PersianPC :
مشکل شما مربوط به رجیستر گلوبال هست.
میتونید به جای نام متغیر ها از
PHP:
 $_POST['feildname']
استفاده کنید.
...
آقا دستت درست .
حله .
 

byvafa

کاربر تازه وارد
تاریخ عضویت
7 آپریل 2005
نوشته‌ها
175
لایک‌ها
0
به نقل از sama_sally :
راستش خیلی کار داشتم
اینو نوشتم که دوستمون کارش راه بیفته
سالاری .
اگه تو هر فروم یه آدم با مرام مثل تو بود چی میشد ... .

بازم تشکر می کنم .
 

sama_sally

Registered User
تاریخ عضویت
5 آپریل 2005
نوشته‌ها
2,598
لایک‌ها
1
سن
35
محل سکونت
Essen, Deutschland
به نقل از byvafa :
سالاری .
اگه تو هر فروم یه آدم با مرام مثل تو بود چی میشد ... .

بازم تشکر می کنم .

بی وفا جان خیلی با وفایی!
انجام وظیفه بود... خواهش میکنم
 
بالا