سؤال

لدي شكل HTML الأساسي ردد من خلال PHP:

<html>
<body>
<?php 
if (isset($_GET["pk"]))
 { $pk = $_GET["pk"];}
echo '<form action="up.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>';
?>
</body>
</html>

أرغب في تمرير قيمة PK إلى UP.PHP

تعديل الإجراء = "up.php؟ pk = $ pk" لم ينجح.

هل كانت مفيدة؟

المحلول

استخدم حقلًا مخفيًا:

<input type="hidden" name="pk" value="<?php echo $pk; ?>">

بالمناسبة ، طباعة كميات كبيرة من HTML كما لديك البشع. ضع في اعتبارك إما الخروج من PHP للقيام بذلك ، باستخدام Heredoc ، محرك قالب ، أو إطار عمل.

تعديل:

كما هو مذكور أدناه ، يجب ألا تقوم بطباعة GET ونشر البيانات مرة أخرى إلى الصفحة دون تعقيمها أولاً. على افتراض أن PK هو مفتاح أساسي ، يجب عليك التفاف $pk أعلاه مع Intval وظيفة، على أقل تقدير.

نصائح أخرى

وأنا أتفق مع جميع التعليقات المتعلقة بنوع من التحكم في الإدخال لمتغير $ _get ['pk']. أود أن أوصي وحدة التصفية في PHP ، والتي هي إلى حد كبير وحدة مثبتة افتراضية على ما أعتقد.

<html>
<body>
<?php 
 $param = filter_input(INPUT_GET, 'pk', FILTER_SANITIZE_ENCODED);
?>
<form action="up.php<?php echo (isset($param) && $param != false) ? '?pk=' . $params : ''); ?>" method="post"enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

يمكنك العثور على مزيد من المعلومات حول وحدة التصفية هنا: نص الارتباط

وأنا أتفق أيضًا مع Paolo Bergantino ، هذه ليست أجمل طريقة للقيام بذلك ، ويمكن أن يكون محرك القالب أو heredocs أو regexp وسيلة أفضل لزيادة قابلية القراءة والصيانة للنظام.

لا يمكنك استخدام متغير داخل سلسلة واحدة مقبلة:

$pk = 123;
echo 'Hello $pk'; // echos Hello $pk
echo "Hello $pk"; // echos Hello 123
echo 'Hello ' . $pk; // echos Hello 123

أفضل طريقة لتمريرها من خلالها ستكون كحقل مخفي داخل النموذج

جرب sth مثل هذا:

<html>
<body>
<?php 
$params = "";
if (isset($_GET["pk"]))
  { $params = "?pk=" . $_GET["pk"];}
echo '<form action="up.php' . $params . '" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>';
?>
</body>
</html>

بالطبع يجب أن تدرك أن $ _get ["PK"] قد تحتوي على أي شيء إلى حد كبير ، لذلك فكر في نوع من تطهير المدخلات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top