我知道你可以发送一个标题告诉浏览器这个页面是禁止的:
header('HTTP/1.0 403 Forbidden');
Run Code Online (Sandbox Code Playgroud)
但是,如何才能显示在服务器上为此类错误创建的自定义错误页面?
默认情况下,只是发送标题会显示一个白页,但我记得有一段时间后,您可以使用客户错误页面.有人知道吗?
我已经在这个问题上搜索了stackoverflow,并找到了一些主题,但我觉得在这方面我没有真正的答案.
我有一个用户提交的表单,字段的值存储在XML文件中.XML设置为使用UTF-8编码.
用户将不时地从某处复制/粘贴文本,当我得到"实体未定义错误"时.
我意识到XML只支持少数几个实体,除此之外的任何东西都无法识别 - 因此解析器错误.
从我收集的内容中,我看到了一些选项:
并将它们与 实际空间交换出来.我正在对XML文件做的是,用户可以将内容输入到表单中,将其存储在XML文件中,然后该内容在Web页面上显示为XHTML(使用SimpleXML解析).
在我不了解的三个选项或任何其他选项中,处理这些实体的最佳方法是什么?
谢谢,瑞恩
UPDATE
我要感谢大家的好评.我确实确定了导致我的实体错误的原因.所有的建议让我更深入地研究它!
一些文本框中有普通的旧文本框,但我的textareas使用TinyMCE进行了增强.事实证明,在仔细观察的同时,PHP警告总是引用来自TinyMCE增强型textareas的数据.后来我注意到在PC上所有角色都被取出了(因为它无法读取它们),但是在MAC上你可以看到引用该角色的unicode号的小方框.它首先出现在MAC上的正方形中的原因是因为我使用utf8_encode来编码不是UTF的数据以防止其他解析错误(这在某种程度上也与TinyMCE有关).
所有这些的解决方案非常简单:
我entity_encoding : "utf-8"在tinyMCE.init中添加了这一行.现在,所有角色都以他们应该的方式出现.
我想我唯一不理解的是为什么当放置在文本框中时字符仍然显示,因为没有任何东西将它们转换为UTF,但是使用TinyMCE这是一个问题.
当我date()在两个不同的服务器上使用PHP的功能时,我得到两个不同的结果,但两个服务器应该是相同的.
我检查了php.ini服务器#1上的文件,时间是正确的,它看起来如下:
date/time support enabled
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone America/Chicago
Directive Local Value Master Value
---------------------------------------------------
date.timezone America/Chicago America/Chicago
Run Code Online (Sandbox Code Playgroud)
我检查了服务器#2,它看起来如下:
date/time support enabled
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone UTC
Directive Local Value Master Value
---------------------------------------------------
date.timezone America/Chicago America/Chicago
Run Code Online (Sandbox Code Playgroud)
我看到的唯一区别是"默认时区"值.
两个服务器的日期/时间当前显示为:
Server #1: 10/23/2012 09:40:39
Server #2: 10/23/2012 14:40:39
Run Code Online (Sandbox Code Playgroud)
我确认两台服务器都使用php.ini位于内部的服务器,/etc并且我还搜索了两个网络目录,以查找时区可能被覆盖的任何位置:
grep -r "date_default_timezone_set" *
Run Code Online (Sandbox Code Playgroud)
But in that regard, they both contain the …
终端中是否有命令可以找出我的MySQL数据库使用的存储引擎?
我在网上找到了这段代码,我想知道它的作用:
$k[$i] = ord($key{$i}) & 0x1F;
Run Code Online (Sandbox Code Playgroud)
我知道ord()返回一个ASCII值,但我不清楚大括号的作用$key{$i}以及它的作用& 0x1F.
foreach(explode(',' $foo) as $bar) { ... }
Run Code Online (Sandbox Code Playgroud)
VS
$test = explode(',' $foo);
foreach($test as $bar) { ... }
Run Code Online (Sandbox Code Playgroud)
在第一个例子中,它explode是$foo每次迭代的字符串,还是PHP将它保存在内存中,在其自己的临时变量中爆炸?从效率的角度来看,创建额外变量$test或两者都相等是否有意义?
在我的一个页面上,我有一个require_once('../path/to/url/page.php');没有问题的工作.我添加查询字符串的那一刻require_once('../path/to/url/page.php?var=test');它将不再包含该文件.它只是空白.任何人都有任何想法?你能否在require中使用查询字符串?
谢谢,瑞恩
我将有几种不同类型的用户将使用我的系统.对于所有用户,我需要存储用户名,密码,电子邮件地址等内容,但如果他们是A类用户,我还需要存储字段a,b和c的值,但如果他们是用户类别B,我需要存储字段d,e,f和g的值.
USER
-------
id
username
password
CAT_A
--------
id
a
b
c
CAT_B
--------
id
d
e
f
g
Run Code Online (Sandbox Code Playgroud)
我很可能需要使用某种桥接表将用户链接到其中一个CAT表,但我该如何去做呢?我不能使用这样的东西:
EXTEND
--------
user_id
cat_id
Run Code Online (Sandbox Code Playgroud)
因为我不知道cat_id引用哪个CAT表.我是否需要每个类别的字段?如果是这样,那似乎没有标准化,因为会有很多空字段,特别是如果我有3个类别.
EXTEND
--------
user_id
cat_a_id
cat_b_id
...
Run Code Online (Sandbox Code Playgroud)
任何输入都非常感谢!
我通过通用嵌入代码在页面上有一个Vimeo视频:
<div class="video">
<iframe src="http://player.vimeo.com/video/VIDEO_ID" width="100%" height="100%" frameborder="0"></iframe>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在使用Vimeo的JavaScript API(http://vimeo.com/api/docs/player-js)video在视频开始播放时以及视频暂停时为div 添加一个类(这会使div加倍)或完成后,该类被删除,将视频播放器大小重置为其原始大小.
这在桌面/笔记本电脑(Firefox)上按预期工作,但在Android手机上,iframe(一旦它的尺寸翻倍)不会恢复到之前的大小(它是一个百分比,所以它应该适应它的video容器),这导致iframe与其父div重叠.
首先我认为它是iframe的100%宽度和高度,因此我$('#video1').attr('width', 400);在视频停止时使用iframe指定了固定的宽度和高度,但iframe保持不变(它保持两倍的大小).
有没有人知道为什么Android会这样做,我如何强制iframe调整大小?
如果通过将数据写入到文件file_put_contents与FILE_APPEND标志设置和两个用户在同一时间提交数据,这将追加不管,还是有机会的一个条目将被覆盖?
如果我设置了LOCK_EX标志,第二次提交是否会等待第一次提交完成,或者当无法获得独占锁时数据是否丢失?
PHP通常如何处理?我正在运行5.2.9版.如果重要的话
谢谢,瑞恩