相关疑难解决方法(0)

如何在不重新加载页面的情况下修改URL?

有没有办法在不重新加载页面的情况下修改当前页面的URL?

如果可能的话,我想访问#hash 之前的部分.

我只需要在域之后更改部分,因此它不像我违反了跨域策略.

 window.location.href = "www.mysite.com/page2.php";  // Sadly this reloads
Run Code Online (Sandbox Code Playgroud)

html javascript url friendly-url url-rewriting

2221
推荐指数
17
解决办法
129万
查看次数

刷新页面时如何防止表单重新提交(F5/CTRL + R)

我有一个简单的表单,将文本提交到我的SQL表.问题是,在用户提交文本后,他们可以刷新页面并再次提交数据,而无需再次填写表单.我可以在提交文本后将用户重定向到另一个页面,但我希望用户保持在同一页面上.

我记得读过一些关于为每个用户提供一个唯一的会话ID并将其与另一个值进行比较的方法,这个值解决了我遇到的问题,但我忘记了它的位置.

html php forms post form-submit

118
推荐指数
11
解决办法
26万
查看次数

防止重新提交表单

第一页包含HTML表单.第二页 - 处理提交数据的代码.

第一页中的表单已提交.浏览器被重定向到第二页.第二页处理提交的数据.

此时,如果第2页被刷新,则会弹出"确认表单重新提交"警告.

这可以预防吗?

forms http

104
推荐指数
6
解决办法
13万
查看次数

停止数据插入数据库两次

我是PHP的新手,我想知道当用户在与表单相同的页面刷新时,其他程序员使用什么方法/预防来阻止数据输入MySQL数据库两次?显然它发生了,我需要一个很好的方法来阻止它.

谢谢,本

php user-input

25
推荐指数
3
解决办法
2万
查看次数

按回按钮后阻止表单重新提交

我在这里和其他地方搜索了很多帖子,但似乎无法找到我的问题的解决方案.我有一个显示数据库条目的页面:database.php.可以使用表单过滤这些条目.当我过滤它们并只显示我感兴趣的那些时,我可以点击一个条目(作为链接),它将我带到那个条目页面(通过php GET).当我在该条目页面上(即"view.php?id = 1")并点击后退按钮(返回到database.php)时,过滤器表单需要确认表单重新提交.有什么方法可以防止这种情况吗?

这里有一些(简化的)代码示例:

database.php中:

<form>
    <select>
        <option>1</option>
        <option>2
        <option>
    </select>
    <input type="submit" name="apply_filter" />
</form>
<?php
if ( isset( $_POST[ "apply_filter" ] ) ) { // display filtered entries
    $filter = $_POST[ "filter" ];
    $q = "Select * from table where col = '" . $filter . "'";
    $r = mysql_query( $q );
} else { // display all entries
    $q = "Select * from table";
    $r = mysql_query( $q );
}
while ( $rec = mysql_fetch_assoc( $r …
Run Code Online (Sandbox Code Playgroud)

php forms get refresh back

20
推荐指数
2
解决办法
4万
查看次数

POST/Redirect/GET(PRG)与有意义的2xx响应代码

由于POST/Redirect/GET(PRG)模式中的POST请求303 See Other成功返回redirect()状态代码,因此可以告知客户端他们要享受的特定成功风格(例如,OK,Created ,接受等)以及任何适当的标题(例如,Location对于a 201 Created,可能与重定向的标题冲突)?

例如,是否适合使重定向的GET响应POST响应所期望的正确响应代码和标题?

HTTP 1.1规范说:

该方法[303]主要用于允许输出POST激活的脚本以将用户代理重定向到所选择的资源.

但是没有提供任何有关更常见的状态代码和标头丢失的见解.

编辑 - 一个例子:

客户端发送POST请求,在/orders该请求中创建新资源/orders/1.

如果服务器发送201 Created状态location: /orders/1,自动客户端会很高兴,因为它知道资源已创建,并且它知道它在哪里,但使用Web浏览器的人会不高兴,因为他们/orders再次获取页面,如果他们刷新它们他们将发送另一个订单,这不太可能是他们想要的.

如果服务器发送一个303 See Other状态,location: /orders/1人类将被带到他们的订单,通知它的存在和状态,并且不会有意外重复它的危险.但是,自动客户端不会明确告知资源的创建,它必须根据location标头推断创建.此外,如果303重定向到其他地方(例如/users/someusername/orders),人类可能会得到很好的适应,但自动化客户端却没有明显的信息.

我的建议是,发送201 Created的响应对新资源重定向的GET请求,但我越去想它,我喜欢它的少(可能会非常棘手,以确保只有创建者接收的201,它不应该出现的GET请求创建了资源).

在这种情况下,最佳响应是什么?

http

12
推荐指数
1
解决办法
756
查看次数

宁静只适用于Web服务,还是适用于Web服务和Web页面?

我阅读了很多关于PHP的Restful教程.

(我不想深入探讨为什么我不使用RoR.这是由于团队更熟悉PHP)

因为我们计划将来扩展到API,所以我认为实现Restful Web服务很重要.

我看了很多教程

http://www.gen-x-design.com/archives/create-a-rest-api-with-php/

显然宁静是为web服务.

网页怎么样?它们也可以是RESTFUL吗?

如果答案是否定的,请不要超出这条线并告诉我.谢谢.

我知道让网址看起来像RESTFUL网址就是简单地使用mod_rewrite.但是,我很确定,宁静的架构不仅仅是让网址看起来不错.

例如,我在名为list.php的网页上有一个项目列表.每个项目旁边都有一个删除链接.例如,list.php?id = 1&deleteitem

当有人点击list.php?id = 1&deleteitem链接时,我会回到同一个list.php文件并检查$ _GET中的param deleteitem.

如果检测到,我将根据$ _GET中的参数id从数据库中删除.

之后我将重定向回list.php没有任何参数.

我想知道,我如何使整个流程RESTFUL?

我问,因为在REST中,要删除一些你需要使用HTTP请求方法(DELETE).

很明显,在我的链接中,它们都很简单 <a href="list.php?id=1&deleteitem">Delete</a>

请赐教.

我的编程并不那么强大,如果给出的建议尽可能地成为外行,那将是很好的.

谢谢.

编辑

我有2个跟进问题.

问题1)由于这是一个带分页的项目列表,如果我想让它成为RESTful,URL会是什么样子?

问题2)因为我在列表中的每个项目旁边放置DELETE链接,我现在明白了,我应该使用

<form method="POST">
<input type=hidden name="_method" value="delete">
<input type="submit" >
</form>
Run Code Online (Sandbox Code Playgroud)

代替.

但表格应该张贴到哪里?项目网址?/项目/ {项目-ID}

但是我想回到这个列表页面,在成功删除数据库中的行后显示成功消息.

当我使用成功消息刷新此列表页面时,我还想避免弹出消息.

如果我发回这个list.php网址,那么它不是RESTful是吗?因为下面的答案我告诉我每个项目都是需要自己网址的资源.

请赐教.谢谢.

php rest restful-url

5
推荐指数
1
解决办法
1192
查看次数

按下后退按钮时重新提交表单

我使用 HTML 和 PHP 制作的联系表单有问题。当用户单击submit它时,它会重定向到用户收到消息“您的消息已发送”的另一个页面。然后它会自动重定向到主页。但是当用户单击back按钮时,消息再次出现并重新提交表单。因此,我收到两条相同的消息发送到我的电子邮件!

我怎样才能解决这个问题?

html php server-side-scripting

5
推荐指数
1
解决办法
1万
查看次数