网络表单的服务器处理部分仍不清楚 [关闭]

Posted

技术标签:

【中文标题】网络表单的服务器处理部分仍不清楚 [关闭]【英文标题】:Server-processing portion of a webform still unclear [closed] 【发布时间】:2016-02-18 22:25:03 【问题描述】:

我现在一直在尝试制作一个网络表单,并且在服务器处理部分(表单中输入的数据被发送到服务器并接收服务器的响应)后面经常遇到麻烦。

我认为大多数以我的经验水平的人(我仍然将自己归类为 webdev 的新手)可以相对轻松地创建一个基本的 web 表单,但是如果文本框不将任何输入的数据发送到任何地方,你就不会' t 有一个功能性的网络表单。这就是我想了解设计网络表单的下一步的地方。

我通常可以找到很多关于如何使用文本框、下拉菜单、基本上任何元素等构建表单的资源。我很难找到真正的服务器,我可以测试我输入的数据并接收来自服务器的响应,并以某种方式将其解析到评论框中,这样我就可以对我的 web 表单进行功能概念化。

我想基本上得到一个简单的网页表单,要求您提交一个 1-24 之间的数字,然后让它返回字母表中的相应字母。因此,如果您提交超过数字 1,您将收到来自服务器“a”的响应,依此类推。我不希望选择列表是客户端的,我希望它在服务器中,以便我可以发帖。

如果有帮助,我可以访问 Microsoft Azure,所以如果启动某种服务器或 VM 有助于我处理服务器处理部分,请告诉我。这将是我第一次这样做。

【问题讨论】:

步骤 1. 选择您想要使用的服务器端语言。 php、Perl、Python、Java、javascript/Node 等。每种语言都有发送电子邮件的文档。 【参考方案1】:

这是一个相当深入的问题,但我可以给出一些建议。

您需要选择一个服务器(Windows、Apache、Glassfish 等),选择一种与您的服务器兼容的服务器端语言(PHP、ASP、Python、Java),安装该语言,学习并试用 -和错误在你的朋友的帮助下。

不过,我将详细介绍一种可以快速练习的方法。

转到 c9.io(基于 Web 的 IDE)。创建一个免费帐户并登录。

创建一个新的工作区。给它一个名称和描述(你可以拥有一个免费的私人工作区,更多,你将不得不付费。但是,你可以创建许多公共工作区——在测试用例中,这并不重要)。从列表中选择一个模板,然后单击创建工作区。对于本演示,请选择 PHP、Apache 和 mysql

创建后,您应该会在左侧看到您的工作区,以及其中包含的文件。您应该在工作区中有一个 hello-world.php、readme.txt 和 php.ini。您可以阅读自述文件,然后删除 hello-world.php(或将其重命名为您的服务器页面应有的名称)。

为此,我删除了 hello-world.php,并创建了两个文件:index.php 和 server.php(index.php 用于前端,server.php 用于后端)。在 index.php 中,复制并粘贴以下代码:

<!doctype html>
<html>
    <head>
        <title>Test Index</title>
    </head>
    <body>
        Number: <input id='number'>
        Letter: <input id='results' readonly>
        <script src='https://code.jquery.com/jquery-1.12.0.min.js'></script>
        <script>
            $('#number').on('keyup', function()
                $.post(
                    'server.php',
                    number:$('#number').val(),
                    function(data)
                        $('#results').val(data);
                    
                );
            );
        </script>
    </body>
</html>

这是一个非常基本的页面,但是会输入一个数字,并且会有一个只读输入来显示来自服务器的结果。 JS在数字输入上设置keyup监听器,并使用jQuery的POST方法将输入的数字发送到服务器。第一个参数是服务器页面,第二个是一个对象,其中包含服务器所需的任何信息,第三个是一个函数,说明当它返回页面时如何处理这些信息。这样就完成了客户端页面。

打开 server.php 文件(服务器端页面),复制并粘贴以下内容:

<?php
    function toLetter($number) 
        $arr = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
        return $arr[$number - 1];
    
    if(isset($_POST['number']))
        if(is_numeric($_POST['number']) && $_POST['number'] >= 0 && $_POST['number'] <= 26)
            echo toLetter($_POST['number']);
        
        else
            echo "Please enter a number between 1 and 26";
        
    
    else
        echo "No input detected.";
    
?>

此页面包含一个函数 (toLetter),并接受一个通过 POST 方法传递的名为“number”的参数。如果此数字已设置,是数字,并且介于 0 和 26(含)之间,它将使用 toLetter 函数将字母表中的相应字母发送回客户端页面(依次在输入中显示结果#results)。如果没有发送号码(提交的 POST 没有任何数据),它将返回消息“未检测到输入。”。如果数字无效(过高、过低或 NaN),将返回消息“请输入 1 到 26 之间的数字”。

在 c9 中保存这两个页面后,您可以按顶部的“运行项目”按钮来启动虚拟服务器。运行后(您可以在屏幕底部看到控制台),单击 Preview > Preview Running Application。

您应该看到两个输入,一个标记为数字,一个是字母。如果您在数字字段中输入 1 到 26 之间的数字,您将看到相应的字母。

这将使您开始了解前端后端的情况;至少对于 HTML、AJAX 和 PHP。如果您使用 GET 而不是 POST,您将查看 PHP 的 $_GET 数组而不是 $_POST 数组。您可以在 $.post 的第二个参数中的对象中发送任意数量的数据。如果您在后端使用数据库,请确保您学习准备好的语句,或者至少先进行输入清理。

下一步。生成一些很棒的客户端到服务器端代码,直到它崩溃......然后回到这里为你的下一个问题提供一些代码:)

编辑:tl;dr - 使用 jQuery AJAX 从客户端发送到 PHP。使用 $_POST 或 $_GET 来读取变量。使用 echo 发回数据。

【讨论】:

哇,这是一个了不起的答案。非常感谢你,我觉得你完全理解我的来历并很好地解释了它。我能够在 c9.io 上设置完整的答案,现在我可以可视化服务器处理部分背后的概念。 没问题。很高兴我能帮上忙!我感谢您的支持,但如果您决定这样做,标记一个“正确答案”确实会获得一些额外的声誉......无论如何,干杯! :) 如果可以的话,还有一个问题:如果我有一个更大的数据集(而不是字母表),我如何将它引用到服务器代码中?例如,我有一个大型 Microsoft Access DB,并且希望保持我的数据集模块化,我可以在其中修改 Access DB 的内容并使用它的接口,而不必深入研究代码本身。这可能吗?我对其他建议或替代方案持开放态度,我不知道 webdevs 或 dba 处理数据集的首选策略。 我建议使用更稳定的数据库,如 SQL 或 MySQL(MySQL 是免费的 - 我使用的就是这个)。但是,如果您已确定使用 Access 作为数据库,则可以使用 PHP 连接和修改数据……只需使用 ODBC 或 PDO 连接:***.com/questions/19807081

以上是关于网络表单的服务器处理部分仍不清楚 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

20145301赵嘉鑫《网络对抗》Exp8 Web基础

20145321 《网络对抗》 Web基础

20155333 《网络对抗》 Exp8 Web基础

如何在 web 表单中包含部分视图

2015219付颖卓《网络对抗》EXP8 Web基础

2017-2018-2 20155203《网络对抗技术》 Exp8:Web基础