RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1032524
Accepted
yaleksandr89
yaleksandr89
Asked:2020-10-09 01:21:27 +0000 UTC2020-10-09 01:21:27 +0000 UTC 2020-10-09 01:21:27 +0000 UTC

如何向数据库发出ajax请求?

  • 772

为了培训,我决定编写一个缩短链接的服务。我目前面临以下问题:

添加尚未在数据库中的链接时,行为不太正确。让我解释一下 - 在输入中我插入需要缩短的链接。我按下提交,就是这样:) 页面被重新加载,链接被缩短并添加到数据库中。

要查看生成的链接,您需要引发错误,即尝试再次缩短此链接。为了更直观的展示,上传到主机

目前,我对 3 个选项感兴趣,然后这个组件将适合我(我计划将来将它添加到另一个实现中)。

1.基于问题,我想实现从数据库加载ajax数据。 一个小插曲,我知道谁这样写:

foreach ($sth as $existLink) {
      echo '<h1>...</h1>';
      echo '<ul>';
      echo '<li>...</li>';
      echo '</ul>';
}

他们在赌注中燃烧 :),但这是一个草案,现在我正在处理功能的实现,我将把“美”带到终点线。所以我会原谅你))

负责处理和缩短链接的文件:

<?php
include_once(__DIR__ . '/libraries/database.php');
$externalLink = $_POST['external_link'] ?? null;

function prepareExternalLink($link)
{
    $result = trim($link);
    $result = htmlspecialchars($result);
    return $result;
}

$preparedLink = prepareExternalLink($externalLink);
$sth = db_query("SELECT url, short_key FROM short WHERE url= '" . $preparedLink . "'");

if (empty($_POST['external_link'])) {
    echo 'Введите в поле ссылку, которую требуется сократь:';
} elseif (isset(db_query("SELECT url FROM short WHERE url= '" . $preparedLink . "'")->fetch()['url'])) {
// Должна подгружаться ajax    
foreach ($sth as $existLink) {
        echo '<h1>Такая ссылка уже есть в БД</h1>';
        echo '<ul>';
        echo '<li><strong>Внешняя ссылка</strong>: <a href="' . $existLink['url'] . '" target="_blank">' . $existLink['url'] . '</a></li>';
        echo '<li><strong>Сокращенная ссылка</strong>: <a href="//' . $_SERVER['HTTP_HOST'] . '/&' . $existLink['short_key'] . '" target="_blank">http://' . $_SERVER['HTTP_HOST'] . '/&' . $existLink['short_key'] . '</a></li>';
        echo '</ul>';
    }
} else {
    /*---- Генерация уникального id----*/
    $letters = 'qwertyuiopasdfghjklzxcvbnm1234567890';
    $count = strlen($letters);
    $intval = time();
    $result = '';
    for ($i = 0; $i < 4; $i++) {
        $last = $intval % $count;
        $intval = ($intval - $last) / $count;
        $result .= $letters[$last];
    }
    /*---- INSERT link in db---*/
    $sthInsert = db_query("INSERT INTO short (url,short_key) VALUE (:original_link, :short_key)", [
        'original_link' => $preparedLink,
        'short_key' => $result . $intval
    ]);

// Ajax – появляется информация о добавленной ссылке

}
?>

<form style="margin-top: 10px;" method="post">
    <input type="text" name="external_link">
    <input type="submit" name="submit">
</form>

我用谷歌搜索的所有内容都无法适应我的任务......也许有人知道你可以在哪里看到类似的例子。

数据库我不是经常碰到,但是这里我也需要通过ajax来做。原则上,我进行了查询(不是在本机 j 上,而是在 jquery - 表单验证上),但是这里的数据库和我有点迷失了。

  1. 关于重定向。生成的缩短链接如下所示:example.com/&8hde935。如何制作没有特殊字符的缩短链接(在我的例子中,一个&符号),即example.com/8hde935。

.htaccess

DirectoryIndex index.php
Options -Indexes
Options +FollowSymLinks
php_flag register_globals off

RewriteEngine on
RewriteRule ^&(.*) /redirect.php?key=$1 [L]

重定向

<?php
include_once(__DIR__ . '/libraries/database.php');
$key = htmlspecialchars($_GET['key']) ?? null;
if (isset(db_query("SELECT url, short_key FROM short WHERE short_key= '" . $key . "'")->fetch()['url'])) {
    $sthSelectSingle = db_query("SELECT url, short_key FROM short WHERE short_key= '" . $key . "'");
    header('HTTP/1.1 301 Moved Permanently');
    header('Location:' . $sthSelectSingle->fetch(PDO::FETCH_OBJ)->url);
} else {
    exit('Ошибка при переадресации');
}

我知道是这种情况RewriteRule ^&(.*) /redirect.php?key=$1 [L],但我无法重写规则:(。

  1. 计算链接的点击次数。这个问题仍然是理论上的,但由于我寻求帮助,他们可以定位(到目前为止,没有具体细节)。如何计算缩短链接的点击次数?有一个假设是通过 cookie,但我不确定,我以前没有遇到过。

目前我有 1 个表 3 个字段(id、url、short_key)。我将补充表格,将来我将制作一个管理面板,其中包含有关已保存链接的信息。

php
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    mpakfm
    2020-10-09T15:25:27Z2020-10-09T15:25:27Z

    术语。ajax 在数据库中没有这样的概念加载。是:使用 Ajax 向服务器发送请求。他会将他想要的任何东西放入数据库中。这将帮助您从数据库层中抽象出来。您不需要通过表单中的直接 post 方法发送表单,而是通过拦截 JavaScript 中的提交事件。使用 jQuery。使用其方法向服务器发送请求。ajax 并在响应方法中,您可以获取缩短的字符串并将其插入到页面上所需的 dom 对象中。这是如果服务器不返回错误。并在 php.ini 中单独创建一个 post 处理程序。您可以在同一个文件中,也可以在另一个文件中。主要是在 Ajax 请求中正确指定该文件的地址。在处理程序中,您将收到一个 POST 数组,将其插入数据库并返回响应。这里需要考虑响应格式(文本、json)。因为它的类型需要记在jquery的acc中。field (google) 因为如果 jquery 正在等待 json 并且您从 post 处理程序执行以下操作: echo $shortString; 然后jquery会返回格式错误。

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5