مقاله : در Php من متغیرهای فرم را نمی شناسد. لطفا" کمک.

Iauksh

Iauksh
در PHP به چند صورت میتوان به فیلدهای یک فرم دسترسی داشت. راه ساده، ولی پردردسر، ذکر نام فیلد بعنوان یک متغیر است و در صورتی که فرم ارسال کننده اجرا نشده باشد و یا نام فیلد اشتباه باشد باعث بروز یک خطای بحرانی در اسکریپت شما میشود.

بهرحال راه صحیح دسترسی به فیلدهای یک فرم چنین است:

if (isset($_POST["firstname"])) {
// do something here
print "Your first name is:".$_POST["firstname"];
}
همانطور که میبینید در کد فوق ابتدا چک میشود که فیلدی بنام firstname به این اسکریپت پست شده است یا نه، و اگر نتیجه مثبت باشد از آن استفاده میشود.

و البته راه صحیح دسترسی به فیلدهای پست شده به یک اسکریپت، استفاده از یک متغیر SuperGlobal بنام $_POST بهمراه نام فیلد مربوطه بدین صورت است:

$_POST["your filed name"]
اگر هنوز هم مشکل دارید اسکریپت خود را در اینجا قرار دهید تا نگاهی به آن بیاندازیم :wink:

Iauksh
اسکریپت من این می باشد لطفا" راهنمائی کنید

<?php

//Handle Input here
//Check if $submit has a value of "Go" - The Validator
//int error_reporting(int level);
$you_wrote = $_post['you_wrote'];
$submit=$_post['submit'];
if($submit=="Go"){
//The Processor
echo("You wrote ".$you_wrote);
echo("<br>You could have done whatever you want with the input instead");
exit;
}

?>

<!-- The Frontend HTML form -->
<form action="<?php $_SERVER[PHP_SELF]?>" method="POST" >
<p>Input a word <input type="text" size="20" name="you_wrote">
<input type="submit" name="submit" value="Go"></p>
</form>

Iauksh
اینم از اسکریپت اصلاح شده شما:

<?php

//Handle Input here
//Check if $submit has a value of "Go" - The Validator
//int error_reporting(int level);
$you_wrote = $_POST['you_wrote'];
$submit=$_POST['submit'];
if($submit=="Go"){
//The Processor
echo("You wrote ".$you_wrote);
echo("<br>You could have done whatever you want with the input instead");
exit;
}

?>

<!-- The Frontend HTML form -->
<form action="<?php print $_SERVER[PHP_SELF]?>" method="POST" >
<p>Input a word <input type="text" size="20" name="you_wrote">
<input type="submit" name="submit" value="Go"></p>
</form>

و اما مشکلات اسکریپت شما:
1- در خط 6 و 7 کلمه POST را با حروف کوچک نوشته بودید.
2- در خط 18 دستور print را قبل از $_SERVER[PHP_SELF] جا انداخته بودید. این اسکریپت شما بود:

<form action="<?php $_SERVER[PHP_SELF]?>" method="POST" >
در حالی که باید اینطور باشد:

<form action="<?php print $_SERVER[PHP_SELF]?>" method="POST" >

نکته آخر اینکه دفعه بعدی که خواستید کد نمونه داخل پست تان درج کنید از tag های code برای نمایش صحیح کد نمونه استفاده کنید (به دکمه code در هنگام ارسال پست جدید توجه کنید).

Iauksh
من کل کد شما را در یک فایل به عنوان Input.php ذخیره کردم(در DocumentRoot) ولی متاسفانه باز ایراد قبلی را گرفت .


Warning: Undefined variable: _POST in E:\PhpFiles\in.php on line 6
Warning: Undefined variable: _POST in E:\PhpFiles\in.php on line 7

Input a word
بعد که در EditBox جلوی input a word چیزی مینویسیم و submit می کنیم صفحه ای با اطلاعت زیر باز می شود:


Forbidden
You don't have permission to access /<br><b>Warning</b>: Use of undefined constant PHP_SELF - assumed 'PHP_SELF' in <b>E:/PhpFiles/in.php</b> on line <b>18</b><br><br><b>Warning</b>: Undefined variable: _SERVER in <b>E:/PhpFiles/in.php</b> on line <b>18</b><br> on this server.


--------------------------------------------------------------------------------
Apache/2.0.46 (Win32) Server at localhost Port 80


باتشکر-تقوی

Iauksh
احتمالا نسخه PHP شما پایینتر از 4.1 است. در نسخه ‌های قبل از 4.1 متغیر $_SERVER وجود ندارد و باید بجای آن از $HTTP_SERVER_VARS استفاده کنید. مثال:

$HTTP_SERVER_VARS['PHP_SELF']
مثال در یک کد کامل:

<?php
if ($HTTP_POST_VARS['action'] == 'submitted') {
print '<pre>';

print_r($HTTP_POST_VARS);
print '<a href="'. $HTTP_SERVER_VARS['PHP_SELF'] .'">Please try again</a>';

print '</pre>';
} else {
?>
<form action="<?php echo $HTTP_SERVER_VARS['PHP_SELF']; ?>" method="post">
Name: <input type="text" name="personal[name]"><br>
Email: <input type="text" name="personal[email]"><br>
Beer: <br>
<select multiple name="beer[]">
<option value="warthog">Warthog</option>
<option value="guinness">Guinness</option>
<option value="stuttgarter">Stuttgarter Schwabenbr&auml;u</option>
</select><br>
<input type="hidden" name="action" value="submitted">
<input type="submit" name="submit" value="submit me!">
</form>
<?php
}
?>