PHP表单提交并保存文件

<?php

/**
 * 回发处理逻辑
 */
function postback () {
  // // 申明 $message 是全局
  // global $message;

  // 1. 校验参数的完整性
  if (empty($_POST['username'])) {
    // 没有提交用户名 或 用户名为空字符串
    $GLOBALS['message'] = '请输入用户名';
    return;
  }

  if (empty($_POST['password'])) {
    $GLOBALS['message'] = '请输入密码';
    return;
  }

  if (empty($_POST['confirm'])) {
    $GLOBALS['message'] = '请输入确认密码';
    return;
  }

  if ($_POST['password'] !== $_POST['confirm']) {
    $GLOBALS['message'] = '两次输入的密码不一致';
    return;
  }

  if (!(isset($_POST['agree']) && $_POST['agree'] === 'on')) {
    $GLOBALS['message'] = '必须同意注册协议';
    return;
  }

  // 所有的校验都OK
  $username = $_POST['username'];
  $password = $_POST['password'];

  // 将数据保存到文本文件中
  file_put_contents('users.txt', $username . '|' . $password . "\n", FILE_APPEND);
  $GLOBALS['message'] = '注册成功';
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  postback();
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>注册</title>
</head>
<body>
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <table border="1">
      <tr>
        <td><label for="username">用户名</label></td>
        <td><input type="text" name="username" id="username" value="<?php echo isset($_POST['username']) ? $_POST['username'] : ''; ?>"></td>
      </tr>
      <tr>
        <td><label for="password">密码</label></td>
        <td><input type="password" name="password" id="password"></td>
      </tr>
      <tr>
        <td><label for="confirm">确认密码</label></td>
        <td><input type="password" name="confirm" id="confirm"></td>
      </tr>
      <tr>
        <td></td>
        <td><label><input type="checkbox" name="agree" value="on"> 同意注册协议</label></td>
      </tr>
      <?php if (isset($message)): ?>
      <tr>
        <td></td>
        <td><?php echo $message; ?></td>
      </tr>
      <?php endif ?>
      <tr>
        <td></td>
        <td><button>注册</button></td>
      </tr>
    </table>
  </form>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 ExtJS 中,可以使用组件 `Ext.form.Panel` 和 `Ext.form.field.File` 来实现文件上传功能,而不需要使用提交。 首先,需要创建一个 `Ext.form.Panel` 组件,并设置 `enctype` 属性为 `multipart/form-data`,示上传文件的数据类型为二进制数据。然后,在该组件中添加一个 `Ext.form.field.File` 组件,用于选择要上传的文件。 在提交时,可以通过 `Ext.Ajax.request` 方法发送请求,将上传的文件作为请求参数发送到服务器端。具体实现代码如下: ```javascript Ext.create('Ext.form.Panel', { title: '文件上传示例', width: 400, bodyPadding: 10, renderTo: Ext.getBody(), items: [{ xtype: 'filefield', name: 'file', fieldLabel: '选择文件', labelWidth: 100, msgTarget: 'side', allowBlank: false, anchor: '100%', buttonText: '浏览...' }], buttons: [{ text: '上传', handler: function() { var form = this.up('form').getForm(); if (form.isValid()) { form.submit({ url: 'upload.php', waitMsg: '正在上传文件,请稍候...', success: function(form, action) { Ext.Msg.alert('提示', '文件上传成功!'); }, failure: function(form, action) { Ext.Msg.alert('错误', '文件上传失败!'); } }); } } }] }); ``` 在上述代码中,`Ext.form.Panel` 组件中添加了一个 `Ext.form.field.File` 组件,其 `name` 属性设置为 `file`,示上传的文件对应的参数名为 `file`。在点击上传按钮时,通过 `Ext.form.Panel` 组件的 `getForm` 方法获取到对象,然后通过 `isValid` 方法检查是否合法。如果合法,则通过 `submit` 方法提交数据,其中 `url` 属性设置为上传文件的服务器地址,`waitMsg` 属性设置为上传文件时显示的等待信息。在上传成功或失败后,分别通过 `success` 和 `failure` 回调函数进行处理。 在服务器端,可以使用 PHP 等脚本语言处理上传的文件。例如,以下是一个简PHP 代码示例,用于接收上传的文件保存到服务器上: ```php <?php $targetDir = "uploads/"; $targetFile = $targetDir . basename($_FILES["file"]["name"]); if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) { echo "文件上传成功!"; } else { echo "文件上传失败!"; } ?> ``` 在上述 PHP 代码中,`$_FILES["file"]` 示上传的文件对象,可以通过 `tmp_name` 属性获取上传文件的临时文件名,通过 `name` 属性获取上传文件的原始文件名。`move_uploaded_file` 函数用于将上传的文件移动到指定目录中。当文件上传成功时,打印出文件上传成功的提示信息,否则打印出文件上传失败的提示信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值