سؤال

وأنا بدأت للتو لتعلم PHP، كيف سيكون الشروع في بيان الصدى بعد يتم الضغط على زر إرسال، أو حتى علامة مرساة.

وهنا هو رمز بلادي حتى الآن

form name="myform" method="get" actions="madlib01.php"

 Name: <input type="text" name="name" /> <br />


     <input type="submit" name="submit" />

والنموذج

<?php

$Name = $_GET['name'];

$hello .= "Hello $Name";

echo $hello  //I would prefer the echo to happen after the submit button is hit

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

المحلول

والسمة الصحيحة للعلامة نموذج الخاص بك هو "العمل"، وليس "الإجراءات"

عند إرسال النموذج، يتم إرسال طلب جديد إلى الخادم (في الحالة الخاصة بك، وذلك باستخدام GET).

وحتى أن تفعل كل شيء في صفحة واحدة:

وform.php:

<form action="form.php" method="GET">
<input type="text" name="name"/>
<input type="submit">
</form>

<?PHP
if (! empty($_GET['name'])){
   echo 'Hello, ' . $_GET['name'];
}
?>

نصائح أخرى

وسوف تحتاج أولا للتحقق مما إذا تلقت PHP المعلمة GET باستخدام isset أو <أ href ل = "http://www.php.net/array_key_exists" يختلط = "نوفولو noreferrer"> array_key_exists :

if(isset($_GET['name']) && !empty($_GET['name'])) {
    $Name = $_GET['name'];
    echo "Hello $Name";
}

وأو:

if(array_key_exists('name', $_GET) && !empty($_GET['name'])) {
    $Name = $_GET['name'];
    echo "Hello $Name";
} else {
    //example: default to something if nothing has been passed
    echo "Hello Guest";
}

ونلاحظ أيضا، إذا كنت ترسل إلى نفس الصفحة، يمكنك حذف السمة action من علامة نموذج الخاص بك تماما:

<form method="GET">
<اقتباس فقرة>   

صدى $ مرحبا

ولقد اكتسبت مجرد الضعف HTML الحقن. اذا كان شخص ما يرسل المستخدم الخاص بك إلى:

http://www.example.com/madlib01.php?name=<script>stealYourCookies()</script>

وكنت قد حصلت مشاكل.

نعم، هذا هو بلدي أولا PHP سكريبت. هذا لا يجعل الأمن اختياري. وهذا خطأ كل تعليمي يجعل: تدريس ممارسة سيئة منذ البداية، وعلاج صحة (والأمن، والتي هي مجموعة فرعية من صحة) كخيار إضافي

والنتيجة هي أن معظم كود PHP من هناك الكامل من الثقوب. ولكن ليس هناك حاجة للك أن تكون! في كل مرة قمت بوضع سلسلة نقية النص في سياق HTML المحيطة بها، والهروب بشكل صحيح:

echo htmlspecialchars($hello);

وأنا أميل إلى تعريف دالة باسم أقصر من 'htmlspecialchars' أن تفعل ذلك بالنسبة لي، وأنا كسول.

<?php
    function h($text) {
        echo(htmlspecialchars($text, ENT_QUOTES));
    }
    $name= '';
    if (isset($_REQUEST['name']))
        $name= trim($_REQUEST['name']);
?>

...

<?php if ($name!=='') { ?>
    <p> Hello, <?php h($name); ?>! </p>
<?php } ?>

<form method="get" action="madlib01.php">
    <p>
        <label for="namefield">Name:</label>
        <input id="namefield" type="text" name="name" />
    </p>
    <p>
        <input type="submit" />
    </p>
</form>

والآن إذا قلت اسمك مستر

scroll top