WeChat 미니 프로그램에서 PHP 백엔드 양식 제출

不言
풀어 주다: 2023-03-30 21:04:02
원래의
2200명이 탐색했습니다.

이 글은 위챗 미니 프로그램 PHP 백엔드 양식 제출 예시에 대한 자세한 설명을 중심으로 소개합니다. 필요한 친구들은 참고하시면 됩니다

위챗 미니 프로그램 PHP 백엔드 양식

1과 비교해보세요. 이전 미니 프로그램 WEB+PHP 웹 사이트 구축에 대해 개인적으로 이해하기로는 웹을 WeChat 측에 배치하고 레이아웃, 이벤트 트리거 및 데이터 전송을 위해 프런트 엔드에 있는 미니 프로그램의 고정 형식을 사용하고 서버 측은 모든 백엔드 언어로 작성할 수 있지만 모든 데이터는 JSON 형식으로 애플릿에 반환되어야 합니다.

2. 어제 로그인 등록 및 비밀번호 분실 기능을 작성했습니다. 이는 본질적으로 양식 제출 작업입니다. 그러면 등록 기능을 사용하여 이 예제를 작성해 보겠습니다.

3. 디렉터리 다이어그램

  1. js 파일은 주로 요청을 보내고 데이터를 받는 논리적 컨트롤입니다.

  2. json은 이 페이지의 로컬 구성에 사용되며 전역 app.json 구성을 재정의합니다.

  3. wxss는 페이지의 스타일을 설정하는 데 사용됩니다.

  4. wxml은 html

4과 동일합니다. 지금은 스타일과 json 파일에 대해 신경쓰지 않겠습니다. 양식 제출을 검토하고 싶습니다

5.Wxml 파일 코드

<view class="load-head">

  <image src="../../images/return.png" />

  注册

</view>

<view class="login">

  <form bindsubmit="formSubmit">

    <view class="field clearfix">

      <label for="name"><image src="../../images/phone.png" /></label>

      <input id="name" name="mobile" class="login-input" type="text" placeholder="请输入手机号" />

    </view>

    <view class="field clearfix">

      <label for="password"><image src="../../images/code.png" /></label>

      <input id="password" class="login-input" type="password" placeholder="请输入验证码" />

      <button class="get-code" hover-class="code-hover">获取验证码</button>

    </view>

    <view class="field clearfix">

      <label for="password"><image src="../../images/password.png" /></label>

      <input id="password" name="password" class="login-input" type="password" placeholder="请设置6-20位登录密码" />

    </view>

    <view class="field clearfix">

      <label for="repassword"><image src="../../images/password.png" /></label>

      <input id="repassword" name="repassword" class="login-input" type="password" placeholder="请输入确认密码" />

    </view>

    

    <button class="btn_login" formType="submit">注册</button>

  </form>

  <view class="reg_forget clearfix">

    <navigator url="../login/index" class="btn_reg">登录</navigator>

    <navigator url="../forget/index" class="btn_forget">忘记密码</navigator>

  </view >

  

</view>
로그인 후 복사

6. 몇 가지 핵심 사항을 이해해야 합니다

a.양식 양식은 제출 이벤트를 바인딩해야 합니다. 미니 프로그램에서 속성은 bindsubmit,

bindsubmit=” formSubmit”입니다. 여기서 속성 값 formSubmit은 사양을 준수하는 모든 값으로 이름을 지정할 수 있으며 이는 이전 HTML onsubmit="formSubmit()"과 동일합니다. , 는 제출 시 formSubmit 함수 이벤트를 트리거하는 함수 이름입니다. 이 함수는 js로 작성됩니다.

b. 다른 속성은 이전 HTML과 유사합니다. 양식에는 name="value"가 있어야 하며 백엔드 처리는 이전과 동일합니다. 예를 들어, name="username" PHP는 $_POST[를 사용할 수 있습니다. '사용자 이름']을 수신합니다.

C. 미니 프로그램에는 입력 제출 버튼이 없으므로 각 양식마다 제출 버튼이 있어야 하며,

, 이 버튼입니다. 제출 이벤트를 열 때 사용됩니다.

7.index.js code

Page({

 data: {

  

 },

 formSubmit: function(e) { 

  if(e.detail.value.mobile.length==0||e.detail.value.password.length==0){

   wx.showToast({

    title: &#39;手机号码或密码不得为空!&#39;,

    icon: &#39;loading&#39;,

    duration: 1500

   })

   setTimeout(function(){

     wx.hideToast()

    },2000)

  }else if(e.detail.value.mobile.length != 11){

    wx.showToast({

    title: &#39;请输入11位手机号码!&#39;,

    icon: &#39;loading&#39;,

    duration: 1500

   })

   setTimeout(function(){

     wx.hideToast()

    },2000)

  }else if(e.detail.value.password.length <6 ||e.detail.value.password.length>20){

    wx.showToast({

    title: &#39;请输入6-20密码!&#39;,

    icon: &#39;loading&#39;,

    duration: 1500

   })

   setTimeout(function(){

     wx.hideToast()

    },2000)

  }else if(e.detail.value.password != e.detail.value.repassword){

    wx.showToast({

    title: &#39;两次密码输入不一致!&#39;,

    icon: &#39;loading&#39;,

    duration: 1500

   })

   setTimeout(function(){

     wx.hideToast()

    },2000)

  }else{


   wx.request({ 

      url: &#39;https://shop.yunapply.com/home/Login/register&#39;, 

      header: { 

       "Content-Type": "application/x-www-form-urlencoded" 

      },

      method: "POST",

      data:{mobile:e.detail.value.mobile,password:e.detail.value.password},

      success: function(res) {

       if(res.data.status == 0){

         wx.showToast({

          title: res.data.info,

          icon: &#39;loading&#39;,

          duration: 1500

         })

       }else{

         wx.showToast({

          title: res.data.info,//这里打印出登录成功

          icon: &#39;success&#39;,

          duration: 1000

         })

       }

      } 

     })

  }

 }, 

})
로그인 후 복사

8.

Page()는 페이지가 로드될 때 효과를 렌더링하기 위한 js 객체를 포함하는 필수 메소드입니다

data: {}, 데이터 객체, 페이지에 데이터를 설정하면 프런트 엔드에서 이 객체의 데이터를 읽어 표시할 수 있습니다.

formSubmit: function 미니 프로그램의 메소드는 모두 메소드 이름입니다: function(), 여기서 함수는 현재 시간을 트리거하는 객체로 매개변수를 전달할 수 있습니다.

다음은 함수의 실행입니다. 검증이 너무 많아서 일부만 보여드리겠습니다.

if(e.detail.value.mobile.length==0||e.detail.value.password.length==0){

   wx.showToast({

    title: &#39;手机号码或密码不得为空!&#39;,

    icon: &#39;loading&#39;,

    duration: 1500

   })
로그인 후 복사

여기서 e는 HTML onclick="foo(this)" 이 객체와 유사하게 현재 이벤트를 트리거하는 객체입니다. 미니 프로그램은 e.detail.value와 같은 많은 내장 호출 메서드를 캡슐화합니다. .mobile은 현재 객체 name="mobile"의 e.detail.value.mobile.length 값이 이 값의 길이입니다

showToast는 JS의 Alert와 유사하며 팝업 상자, 제목은 표시되는 정보입니다. 팝업 상자에서 아이콘은 팝업 상자입니다. 상자의 아이콘 상태에는 현재 로드 및 성공의 두 가지 상태만 있습니다. 기간은 팝업 상자가 화면에 표시되는 시간입니다.

9. 핵심은 다음과 같습니다

wx.request({ 

      url: &#39;https://shop.com/home/Login/register&#39;, 

      header: { 

       "Content-Type": "application/x-www-form-urlencoded" 

      },

      method: "POST",

      data:{mobile:e.detail.value.mobile,password:e.detail.value.password},

      success: function(res) {

       if(res.data.status == 0){

         wx.showToast({

          title: res.data.info,

          icon: &#39;loading&#39;,

          duration: 1500

         })

       }else{

         wx.showToast({

          title: res.data.info,//这里打印出登录成功

          icon: &#39;success&#39;,

          duration: 1000

         })

       }

      },

fail:function(){

       wx.showToast({

        title: &#39;服务器网络错误!&#39;,

        icon: &#39;loading&#39;,

        duration: 1500

       })

      }  

     })
로그인 후 복사

wx.request({})는 https 요청을 시작하는 작은 프로그램입니다.

Here

a.url은 요청한 URL입니다. 예를 들어 프런트엔드에서는 POST 형식에서 action='index.php'를 사용했습니다. 여기서 Index.php는 상대 경로이고, 요청한 URL은 다음과 같습니다. 미니 프로그램은 절대 네트워크 경로여야 합니다.

예: https://shop.com/home/Login/register

b.

 header: { 

    "Content-Type": "application/x-www-form-urlencoded" 

   },
로그인 후 복사

POST와 GET은 데이터를 전송하는 방식이 다르기 때문에 POST의 헤더는

"Content"여야 합니다. - 유형": "application/x-www-form-urlencoded"

GET의 헤더는 'Accept'일 수 있습니다: 'application/json'

c. 반드시 메소드를 지정하십시오: "POST" 기본값은 " GET", 대문자로 유지하세요

data:{mobile:e.detail.value.mobile,password:e.detail.value.password},

여기의 데이터는 서버에 전송된 데이터 POST입니다. {name:value}

d.Success 콜백 함수

success: function(res) {

  if(res.data.status == 0){

    wx.showToast({

    title: res.data.info,

    icon: &#39;loading&#39;,

    duration: 1500

    })

}else{

    wx.showToast({

    title: res.data.info,

    icon: &#39;success&#39;,

    duration: 1000

    })

   }

  }
로그인 후 복사

e.success:function() 형식은 요청 상태(200)에 의해 성공적으로 트리거되는 이벤트입니다. 요청은 성공적인 작업을 의미하지 않습니다. 요청은 단지 프로그램이 도착했다는 것입니다. 이 줄은 서버 측에서 열려 있습니다.

fail:function()은 네트워크 요청이 실패할 때 트리거되는 이벤트입니다.

f.

if(res.data.status == 0){

         wx.showToast({

          title: res.data.info,

          icon: &#39;loading&#39;,

          duration: 1500

         })

       }else{

         wx.showToast({

          title: res.data.info,//这里打印出登录成功

          icon: &#39;success&#39;,

          duration: 1000

         })

       }
로그인 후 복사

여기의 코드 조각은 PHP 백엔드 프로그램과 관련이 있습니다.

1.POST通过数据到https://shop.com/home/Login/register这个接口,用过THINKPHP的就会知道是HOME模块下的Login控制下的register方法

2.register方法根据POST过来的数据,结合数据库进行二次验证,如果操作成功,返回什么,如果操作失败,返回什么

3.后端PHP代码如下:

控制器 LoginController.class.php

/**
 * 用户注册
 */
public function register()
{
  if (IS_POST) {
    $User = D("User");
    if (!$User->create($_POST, 4)) {
      $this->error($User->getError(),&#39;&#39;,true);
    } else {
      if ($User->register()){
        $this->success(&#39;注册成功!&#39;,&#39;&#39;,true);
      }else{
        $this->error(&#39;注册失败!&#39;,&#39;&#39;,true);
      }
    }
  }
}
로그인 후 복사

模型

UserModel.class.php 的register方法

public function register()
{
  $mobile = I(&#39;post.mobile&#39;);
  $password = I(&#39;post.password&#39;);

  $res = D(&#39;User&#39;)->add(array(
    &#39;mobile&#39;=> $mobile,
    &#39;password&#39;=>md5($password),
    &#39;modifytime&#39;=>date("Y-m-d H:i:s")
  ));

  return $res;
}
로그인 후 복사

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

PHP 中TP5 Request的请求对象

php中反射的应用

PHP后端方法实现网页的分页下标生成代码

위 내용은 WeChat 미니 프로그램에서 PHP 백엔드 양식 제출의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿