PDA

View Full Version : سوال: مشكل با استفاده از PHP_SELF



afsharjowkar
جمعه 27 اردیبهشت 1392, 08:55 صبح
سلام ميخوام اطلاعات گرفته شده از فرم رو به همين فرم جاري بفرستم اين يك نممونه هست



<html>
<head>
<title>Feet to meters conversion</title>
</head>
<body>
<?php

//Check to see if the form has been submitted
$feet = $_GET["feet"];
if ($_GET[feet] != NULL) {
echo "<strong>$feet</strong> feet converts to <strong>";
echo $feet * 0.3048;
echo "</strong> meters.<br />";
}

?>
<form action="<?php echo ($_SERVER['PHP_SELF']); ?>" method="GET">
<label>Feet: <input type="text" name="feet" value="<?php echo $feet; ?>" /></label>
<input type="submit" value="Convert!" />
</form>
</body>
</html>
ولي وقتي اجراا ميكنم اين خط رو نشنون ميده
No input file specified.

چندتا نمونه ديگه هم بررسي كردم همشمون همين پيغام رو ميدن

ممنون ميشم راهنمايي كنيد
اگه يه نمونه كوچيك دارين كه درست كار ميكنه لطفا بدين تست كنم
در ضمن من با rapidphp كدهارو ميزنم

MRmoon
جمعه 27 اردیبهشت 1392, 09:41 صبح
نگا برا من اينجوري ميشه.

توي اينپوت يه خطا ثبت ميكنه چون متغير توش از قبل تعريف نشده تو اين كدت.

104288

afsharjowkar
جمعه 27 اردیبهشت 1392, 09:44 صبح
نگا برا من اينجوري ميشه.

توي اينپوت يه خطا ثبت ميكنه چون متغير توش از قبل تعريف نشده تو اين كدت.

104288

توي اين خط NAme رو گذاشتم feet كه همون متغيير هست


<input type="text" name="feet" value="<?php echo $feet; ?>" />

xcodex
جمعه 27 اردیبهشت 1392, 16:14 عصر
با سلام

چون همون اول که صفحه بارگذاری میشه میخواد مقدار feet$ رو در داخل input بزاره error میگیره چون هنوز فرم submit نشده. و اصلا feet$ مقدار دهی و تعریف نشده.

برای رفع این مشکل یه شرط بزارید که اگه get_$ ست شده یا اینکه فرم submit شده اونوقت نمایش بده feet$ رو در داخل input.


یا حق

MMSHFE
جمعه 27 اردیبهشت 1392, 18:18 عصر
برای ارسال اطلاعات فرم به همون صفحه، target رو خالی بگذارین. از PHP_SELF بخاطر مسائل و مشکلات امنیتی استفاده نکنید.

bikran
جمعه 27 اردیبهشت 1392, 22:37 عصر
برای ارسال اطلاعات فرم به همون صفحه، target رو خالی بگذارین. از PHP_SELF بخاطر مسائل و مشکلات امنیتی استفاده نکنید.

ميشه بگيد PHP_SELF چه مشكلات امنيتي ميتونه داشته باشه؟

MMSHFE
جمعه 27 اردیبهشت 1392, 22:58 عصر
استفاده از PHP_SELF مشکلات امنیتی زیادی مطرح میکنه که قبلاً زیاد درباره اش بحث شده. توی تالار PHP جستجو کنید.

MMSHFE
شنبه 28 اردیبهشت 1392, 08:34 صبح
یک نمونه کد میگذارم خودتون تا ته قضیه رو بخونید:


echo '<form action="' . $_SERVER['PHP_SELF'] . '" method="post">' . PHP_EOL;
echo '</form>' . PHP_EOL;

کد فوق رو به اسم test.php توی پوشه www ذخیره کنید و آدرس زیر رو توی مرورگر تایپ کنید:
localhost/test.php/"<script>alert('xss');</script>

afsharjowkar
یک شنبه 29 اردیبهشت 1392, 21:23 عصر
یک نمونه کد میگذارم خودتون تا ته قضیه رو بخونید:


echo '<form action="' . $_SERVER['PHP_SELF'] . '" method="post">' . PHP_EOL;
echo '</form>' . PHP_EOL;

کد فوق رو به اسم test.php توی پوشه www ذخیره کنید و آدرس زیر رو توی مرورگر تایپ کنید:
localhost/test.php/"<script>alert('xss');</script>

ممنون ميشم يه نمونه ساده از طريقه گرفتن مقادير از اشياء و ارسال به همون فرم بزارين

rezaonline.net
یک شنبه 29 اردیبهشت 1392, 23:25 عصر
اکشن رو خالی بذار .

<?php
if( ! empty($_POST['do']) and $_POST['do']=='register')
{
echo strip_tags($_POST['username']);
}


?>

<form action='' method=post>
<input type=hidden name='do' value='register'>
<input type=text name='username' >
<input type=submit value='OK' >
</form>

mrgraphy
دوشنبه 30 اردیبهشت 1392, 00:04 صبح
سلام دسوت عزیز.
اونجا که به شما پیغام میده به این دلیله که وقتی کد رو اجرا میکنید اولش میاد مقدار Get رو بگیره. حالا اگر Get وجود نداشت چی. اینجا بهتره از isset استفاده کنید. به این صورت



<html>
<head>
<title>Feet to meters conversion</title>
</head>
<body>
<?php

//Check to see if the form has been submitted

if (isset($_GET["feet"])) {
$feet = $_GET["feet"];
echo "<strong>$feet</strong> feet converts to <strong>";
echo $feet * 0.3048;
echo "</strong> meters.<br />";
}

?>
<form action="<?php echo ($_SERVER['PHP_SELF']); ?>" method="GET">
<label>Feet: <input type="text" name="feet" value="<?php echo $feet; ?>" /></label>
<input type="submit" value="Convert!" />
</form>
</body>
</html>


موفق باشید