优秀的编程知识分享平台

网站首页 > 技术文章 正文

需要页面注册获取openid的例子?(网页授权获取openid)

nanyue 2024-08-20 17:29:58 技术文章 4 ℃

需要页面注册获取openid的例子,需要一个php页面,前端页面填写手机号、姓名,然后把openid插入数据库,举个例子?

以下是一个前端填写手机号和姓名,并将 openid 插入数据库的 PHP 例子:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>OpenID Registration</title>
</head>
<body>
  <form action="register.php" method="post">
    <input type="text" name="mobile" placeholder="Mobile Number">
    <input type="text" name="name" placeholder="Name">
    <input type="hidden" name="openid" id="openid">
    <input type="submit" value="Submit">
  </form>
  <script>
    // Your code to get OpenID goes here
    var openid = 'abc123';
    document.getElementById("openid").value = openid;
  </script>
</body>
</html>

以下是注册页面的后端 PHP 代码:

<?php
  $mobile = $_POST['mobile'];
  $name = $_POST['name'];
  $openid = $_POST['openid'];

  $servername = "localhost";
  $username = "your_username";
  $password = "your_password";
  $dbname = "your_database";

  // Create connection
  $conn = new mysqli($servername, $username, $password, $dbname);

  // Check connection
  if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
  }

  $sql = "INSERT INTO users (mobile, name, openid) VALUES ('$mobile', '$name', '$openid')";

  if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
  } else {
    echo "Error: " . $sql . "<br>" . $conn->error;
  }

  $conn->close();
?>

请注意,上述代码仅作为示例,并不能在生产环境中直接使用。您需要替换数据库的用户名和密码以及相关的数据库名称,并对代码进行适当的安全性和错误处理。

当然!如果您需要使用其他方法来获取 OpenID,您可以考虑使用 OAuth 2.0 和 API。具体实现取决于您使用的 API。

例如,如果您使用微信提供的 API,您可以参考以下代码:

前端页面:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>OpenID Registration</title>
</head>
<body>
  <form action="register.php" method="post">
    <input type="text" name="mobile" placeholder="Mobile Number">
    <input type="text" name="name" placeholder="Name">
    <input type="hidden" name="openid" id="openid">
    <input type="submit" value="Submit">
  </form>
  <script>
    // Your code to get OpenID goes here
    var redirectUri = 'https://your-redirect-uri.com';
    var appId = 'your-app-id';
    var scope = 'snsapi_login';
    var state = 'your-state';
    var url = 'https://open.weixin.qq.com/connect/qrconnect?appid=' + appId + '&redirect_uri=' + encodeURIComponent(redirectUri) + '&response_type=code&scope=' + scope + '&state=' + state + '#wechat_redirect';
    window.location.href = url;
  </script>
</body>
</html>

后端 PHP 代码:

<?php
  $mobile = $_POST['mobile'];
  $name = $_POST['name'];
  $openid = $_POST['openid'];

  $appId = 'your-app-id';
  $appSecret = 'your-app-secret';
  $code = $_GET['code'];
  $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appId . '&secret=' . $appSecret . '&code=' . $code . '&grant_type=authorization_code';
  $data = file_get_contents($url);
  $data = json_decode($data, true);
  $openid = $data['openid'];

  $servername = "localhost";
  $username = "your_username";
  $password = "your_password";
  $dbname = "your_database";

  // Create connection
  $conn = new mysqli($servername, $username, $password, $dbname);

  // Check connection
  if ($conn->connect_error) {
    die("Connection failed: ". $conn->connect_error);
}

$sql = "INSERT INTO users (mobile, name, openid) VALUES ('$mobile', '$name', '$openid')";

if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

另外,请确保在使用此代码之前,您已经创建了名为 “users” 的数据表,并且具有名为 “mobile”,“name” 和 “openid” 的字段。您可以使用以下 SQL 语句来创建数据表:

sqlCopy codeCREATE TABLE users (
  id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  mobile VARCHAR(30) NOT NULL,
  name VARCHAR(30) NOT NULL,
  openid VARCHAR(100) NOT NULL
);

最后,请务必注意安全问题,特别是当处理用户数据时。请务必对您的代码进行安全评估,以防止恶意攻击。

最近发表
标签列表