php - 调用 javascript 表单 php

标签 php javascript html

我在 php 脚本中有一个表单。我正在使用 javascript 进行验证。

<?php

$con = mysql_connect("servername","login","passsword");
if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }

mysql_select_db("dbadminatms", $con);

if (isset($_POST['email']) && isset($_POST['name']) && isset($_POST['comments']))
{
    $sql="INSERT INTO feedback_comments (posted_by, email, comments_text, comment_date)
        VALUES
    ('$_POST[name]','$_POST[email]','$_POST[comments]',NOW())";
    $emailID = $_POST['email'];
    $postedBy = $_POST['name'];
    $message = $_POST['comments'];

    if (!mysql_query($sql,$con))
    {
        die('Error: ' . mysql_error());
    }
    else
    {
        mail( "aaa@bbb.coml.com", "Subject: Comments", $message, "From: $emailID\r\n $postedBy" );
    }
}
    else
{

echo '


<form action="contactus.php" method="POST" id="feedback" onsubmit="javascript:return validate("feedback","name","email","comments");">

                <p id="errorMsg">All fields are required</p>

                <label for="name" class="label" id="nameLabel">Your name: </label><input id="name" type="text" size="30"  name="name" class="field"/>
                <br /><br />
                <label for="email" class="label" id="emailLabel">Your Email id: </label><input id="email" type="text" size="30"  name="email" class="field"/>
                <br /><br />

                    <label for="comments" class="label" id="commentsLabel">Comments:</label>
                  <div id="commentsSection">
                    <textarea name="comments" id="comments" class="ui-corner-all" cols="9" rows="5" tabindex="140"></textarea>
                  </div>

            <p><input type="submit" value="Submit" id="submit"/>&nbsp;<input type="reset" /></p>

        </form>';
}

    mysql_close($con);
?>

一切正常,但我无法使用 javascript 验证表单。

最佳答案

相关摘录是:

onsubmit="javascript:return validate("feedback","name","email","comments");"

两件事:

  1. 你在属性中使用双引号会提前结束它(浏览器只会看到onsubmit="javascript:return validate(",这是无效的,会被JavaScript 解释器)。在属性值中使用单引号代替:

    onsubmit="javascript:return validate('feedback','name','email','comments');"
    
  2. 您是否真的有一个名为 validate 的 JavaScript 函数直接或通过外部 JavaScript 文件包含在页面的某处?

另外,请注意,如果您使用onsubmit,则不要在开头使用javascript:,只需:

onsubmit="return validate('feedback','name','email','comments');"

javascript: 伪协议(protocol)仅用于 HTML 通常包含链接的地方,如 anchor 的 href 属性。 onsubmit 和类似的不接受链接,只是 JavaScript 代码,所以你不要使用它。 (如果你这样做基本上是无害的,因为巧合的是它看起来像 JavaScript 中的一个标签,所以代码可以正常解析并运行。但它是错误的。)


题外话,但很重要:绝不依赖客户端验证;客户端验证纯粹是一种用户体验改进练习(帮助人们向您发送您会接受的东西),永远不会替代服务器端验证。您引用的 PHP 代码对 SQL 注入(inject)很开放(或者甚至是无辜的问题——例如,如果其中一个字段中有 ' 会发生什么?)。搜索“SQL Injection PHP”可以找到很多正确处理提交数据的方法。

关于php - 调用 javascript 表单 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4735232/

相关文章:

php - fatal error : Cannot use object of type stdClass as array in … on line 10

javascript - 使用 PHP 动态删除 javascript 代码中的函数调用

javascript - 如何用 PHP 用 %0D%0A 替换新行

javascript - 向网页添加值部分

javascript - 表单未通过 onclick 事件提交

php - 需要锁定登录页面中的文本框?

PHP输入表单,带有精确的金额数字

php - php 中的 simplexml_load_file() 错误

javascript - Windows 桌面小工具 RSS Feed 颜色编码项目

IOS 2 上的 Javascript window.open 窗口错误