• 关于 header函数 的搜索结果

回答

[使用header()函数】PHP的HTTP相关函数种提供了一个 header()函数,首先要清楚,header()函数必须放在php程序的开头部分,而且之前不能有另外的 header() 函数或者 setcookie() 被调用,如果是带有网页输出,本语句必须放在标记之前。使用如下语句: <? header("location: http://www.bibias.com"); exit; ?> 只要执行这个语句就将自动把网页重定向到 http://www.bibias.com 【使用HTML标记重定向】 <? if(isset($url)) { echo ""; } ?> 其中的 CONTENT="5;url=$url" 表示5秒后,本网页将自动转向 $url这个地址。【用js脚本实现重定向】 <? $url="http://www.bibias.com"; echo "&quot;;<br> echo &quot;location.href=\&quot;$url\&quot;&quot;;<br> echo &quot;"; ?>

小旋风柴进 2019-12-02 02:00:02 0 浏览量 回答数 0

回答

你的header函数的参数设置没有错误,header后面是可以接受任何地址的。出现重定向错误的原因是,你在admin这个控制器的构造函数里面进行判断,并试图将其重定向到http://ci.com/admin ,而这个地址应该刚好就是你可以用于访问admin控制器的地址,这样就无限循环了。所以,要么你将后台登入页面放到另外一个控制器中,要么你就不要在构造函数里就进行判断,而是在有需要的页面里分别进行判断,甚至写成一个函数让每个页面一开始都调用这个函数,至少留出后台登入页面不作判断。

落地花开啦 2019-12-02 02:51:25 0 浏览量 回答数 0

回答

兄弟,你打印的是status_code变量的地址。######楼上说的正确呀。你打印出来的是,status_code里面的值copy到堆栈里的某个空间的地址。为啥是copy到堆栈里,你看看函数调用的原理就知道了。实在不行,反汇编一下你的函数调用。哈###### @chen.sy @中山野鬼 多谢 多谢, 也解决了我所期望的结果 sapi_header_set_status((void *) (intptr_t) status_code);###### 引用来自“腾勇”的答案 @chen.sy @中山野鬼 多谢 多谢, 也解决了我所期望的结果 sapi_header_set_status((void *) (intptr_t) status_code); #include <stdio.h> typedef long intptr_t; int sapi_header_set_status(void *arg){ printf("%ld", *((intptr_t*) arg)); } int main() { intptr_t status_code = 400; sapi_header_set_status(&status_code); } 你这个方法,虽然能得出你的结果, 但是不是一般void*指针的用法. 你想要的东西在上面. void *的一般用法是: 你可以传任何指针变量(注意是指针变量,你原来的做法, status_code并不是一个指针变量,你只不过强制转换骗编译器而已,&status_code才是指针);但是你其实知道你想要的是什么指针(int*还是char*);所以你在函数里将void*转化为你知道的指针(你的函数实际想要的是long*,所以我们转为long*); 这也是一切变量无类型的脚本语言的基础. ###### 引用来自“周翼翼”的答案 引用来自“腾勇”的答案 @chen.sy @中山野鬼 多谢 多谢, 也解决了我所期望的结果 sapi_header_set_status((void *) (intptr_t) status_code); #include <stdio.h> typedef long intptr_t; int sapi_header_set_status(void *arg){ printf("%ld", *((intptr_t*) arg)); } int main() { intptr_t status_code = 400; sapi_header_set_status(&status_code); } 你这个方法,虽然能得出你的结果, 但是不是一般void*指针的用法. 你想要的东西在上面. void *的一般用法是: 你可以传任何指针变量(注意是指针变量,你原来的做法, status_code并不是一个指针变量,你只不过强制转换骗编译器而已,&status_code才是指针);但是你其实知道你想要的是什么指针(int*还是char*);所以你在函数里将void*转化为你知道的指针(你的函数实际想要的是long*,所以我们转为long*); 这也是一切变量无类型的脚本语言的基础. 是的,但是这里是需要调用别的api,这个api,没法去改变了。我提问时,只把没有问题的地方提取出来了,完整的代码是: typedef enum { /* Parameter: */ SAPI_HEADER_REPLACE, /* sapi_header_line* */ SAPI_HEADER_ADD, /* sapi_header_line* */ SAPI_HEADER_DELETE, /* sapi_header_line* */ SAPI_HEADER_DELETE_ALL, /* void */ SAPI_HEADER_SET_STATUS /* int */ } sapi_header_op_enum; static void sapi_update_response_code(int ncode TSRMLS_DC){ } SAPI_API int sapi_header_op(sapi_header_op_enum op, void *arg TSRMLS_DC) {     switch (op) {         case SAPI_HEADER_SET_STATUS:             /* 设置 HTTP 状态码 */             sapi_update_response_code((int)(zend_intptr_t) arg TSRMLS_CC);             return SUCCESS;         case SAPI_HEADER_ADD:         case SAPI_HEADER_REPLACE:         case SAPI_HEADER_DELETE: {                /* 添加、替换、删除 HTTP 头 */                 break;             }         case SAPI_HEADER_DELETE_ALL:             /* 清除所有 HTTP 头 */             return SUCCESS;         default:             return FAILURE;     }     ... ... } 如果我只需要改变当前http的状态码,在调用 sapi_update_response_code 时,期望结果就是一个int,而在添加、修改时,期望救过就是一个 char 指针 ###### 引用来自“腾勇”的答案 引用来自“周翼翼”的答案 引用来自“腾勇”的答案 @chen.sy @中山野鬼 多谢 多谢, 也解决了我所期望的结果 sapi_header_set_status((void *) (intptr_t) status_code); #include <stdio.h> typedef long intptr_t; int sapi_header_set_status(void *arg){ printf("%ld", *((intptr_t*) arg)); } int main() { intptr_t status_code = 400; sapi_header_set_status(&status_code); } 你这个方法,虽然能得出你的结果, 但是不是一般void*指针的用法. 你想要的东西在上面. void *的一般用法是: 你可以传任何指针变量(注意是指针变量,你原来的做法, status_code并不是一个指针变量,你只不过强制转换骗编译器而已,&status_code才是指针);但是你其实知道你想要的是什么指针(int*还是char*);所以你在函数里将void*转化为你知道的指针(你的函数实际想要的是long*,所以我们转为long*); 这也是一切变量无类型的脚本语言的基础. 是的,但是这里是需要调用别的api,这个api,没法去改变了。我提问时,只把没有问题的地方提取出来了,完整的代码是: typedef enum { /* Parameter: */ SAPI_HEADER_REPLACE, /* sapi_header_line* */ SAPI_HEADER_ADD, /* sapi_header_line* */ SAPI_HEADER_DELETE, /* sapi_header_line* */ SAPI_HEADER_DELETE_ALL, /* void */ SAPI_HEADER_SET_STATUS /* int */ } sapi_header_op_enum; static void sapi_update_response_code(int ncode TSRMLS_DC){ } SAPI_API int sapi_header_op(sapi_header_op_enum op, void *arg TSRMLS_DC) {     switch (op) {         case SAPI_HEADER_SET_STATUS:             /* 设置 HTTP 状态码 */             sapi_update_response_code((int)(zend_intptr_t) arg TSRMLS_CC);             return SUCCESS;         case SAPI_HEADER_ADD:         case SAPI_HEADER_REPLACE:         case SAPI_HEADER_DELETE: {                /* 添加、替换、删除 HTTP 头 */                 break;             }         case SAPI_HEADER_DELETE_ALL:             /* 清除所有 HTTP 头 */             return SUCCESS;         default:             return FAILURE;     }     ... ... } 如果我只需要改变当前http的状态码,在调用 sapi_update_response_code 时,期望结果就是一个int,而在添加、修改时,期望救过就是一个 char 指针 C语言的编译原理没搞清楚啊。。。。。你把地址的地址传进去,再取出来不就得了。。。。 ######是啊 那些不懂

爱吃鱼的程序员 2020-06-04 16:20:38 0 浏览量 回答数 0

海外云虚拟主机包年25元/月起

海外独享虚拟主机全面上线,助力构建海外网站,提升公司国际形象;全球有效覆盖,超高性价比;建站入门首选,助力出口,适合跨境贸易企业。

问题

有关php header函数的问题,比如说header之前不能有实际的输出

落地花开啦 2019-12-01 20:02:36 994 浏览量 回答数 1

问题

c++链表错误,implicitly-deleted?报错

爱吃鱼的程序员 2020-06-12 10:51:31 0 浏览量 回答数 1

问题

C语言,vc编译器cl,如何支持变量不必在函数开始声明

a123456678 2019-12-01 19:47:54 866 浏览量 回答数 1

问题

c语言函数参数泛类型指针参数问题? 400 报错

爱吃鱼的程序员 2020-06-04 15:16:41 1 浏览量 回答数 1

回答

mouseenter改为click, 放入header中可以将其封装为函数,然后设置html DOM事件调用对应函数来实现

DM。 2020-05-27 13:42:01 0 浏览量 回答数 0

回答

看你的说明头很 大! //我是根目录的index.php function get_header(){ require('./tpl/header.php'); } function get_footer(){ require('./tpl/footer.php'); } $a = "我是变量A"; require('./tpl/index.php'); 是作用域的问题,当你require('./tpl/header.php')时,其中定义的变量是在get_header()这个函数的作用域内,在其外面是访问不到的######确实是作用域的问题,解答的很清楚######回复 @卡卡罗特 : global######噢。那有什么解决法子没?还真第一次遇到。######变量作用域的问题了.######全局变量######如果是作用域的问题。那有什么方案解决呢? 我看wordpress程序也是把 需要的文件引入 写成 函数形式之类调用的的。###### header.php: footer.php: 无法显示$a是正常的, 因为变量不在函数体内. tpl/index.php 应该会显示吧. ###### 作用域的问题,框架设计的有问题。如果按你那么来,就要使用global了,不过这会很丑 <?php $a=5; function head(){ echo '我是页眉'; global $a; echo $a;//函数范围里使用全局变量 echo '<br/>'; } head(); 设计理念太落后,建议更新知识库######只能用全局变量了.###### function(){}或foo(), 也就是方法定义或者调用, 都会引起变量局部的, 所以include/require的时候, 确保没有被function/class隔离, 就可以直接访问, 如: ######... 按错键盘.. a.php <?php $a=1; b.php <?php include a.php echo $a;######echo $GLOBALS['a'];

kun坤 2020-06-06 11:51:18 0 浏览量 回答数 0

回答

方法一:php函数跳转,缺点,header头之前不能有输出,跳转后的程序继续执行,可用exit中断执行后面的程序。 header("Location:网址");//直接跳转 header("refresh:3;url=http://www.jsdaima.com");//三秒后跳转 方法二:利用meta echo"";

珍宝珠 2019-12-02 03:16:24 0 浏览量 回答数 0

回答

Python 用POP接收邮件一、简介  POP(Post Office Protocal)最长用的POP版本是POP3,因此本文是以POP3为主。POP3非常简单,可以用来从邮件服务器上下载邮件,然后删除这些邮件。功能非常有限,后面讲解的IMAP完胜它,不过作为入门级的,还是有必要介绍一下,也对学习SMTP有帮助。  Python提供了poplib模块,它提供了使用POP的便利接口。二、实例  由于pop3功能较IMAP非常有限,而且我最后的程序并没有使用pop3,所以,不详细讲解,下面通过一个例子来说明下较为常见的功能。  这个例子的功能为进入邮箱,查看所有的邮件。首先显示邮件的发件人、主题,查看邮箱主题内容。需要模块import email, poplib, sys连接POP3服务器,登录个人邮箱账户  poplib提供POP3()方法和POP3_SSL()方法连接POP3服务器,区别和SMTP一样。gmail仍然使用POP3_SSL()方式,并返回class POP3实例p = poplib.POP3_SSL('pop.gmail.com')   使用POP3.user(), POP3.pass_()方法来登录个人账户try:p.user(user) p.pass_(passwd)except poplib.error_proto: #可能出现的异常print('login failed')现在已经进入个人账户,下一步,利用POP3.list()函数查看邮箱内邮件信息。  关于list()函数的详细说明,请点击这里。list()函数有三个返回值,分别是:response, listings, octetsresponse 应答信息,我测试中出现的结果:      以b开头的字符串是Byte类型,我在实际测试的时候,返回的信息几乎都是Byte类型的。关于此类型及和普通字符串的转化会在后面举例说明。listings 是形如['message_id message_size',...]若干各message-id和message_size构成的list。后面就是通过message_id来检索邮件。我测试中出现的结果:  octets 不是特别清楚啥意思。response, listings, octets = p.list()最重要的就是listings数据  如上面解释的,listings是个list类型的数据,接下来我们取出listings中的message_id,也就是上面的 "1" "2" "3" "4" ...for listing in listings: #每次需要一个listingnumber, size = listing.split() #由于number和size是以空格分隔,所以利用split()函数分开,split()默认以' '为分隔  现在我们就取出了我们需要的message_id,也就是number,注意number需要从Byte类型转化为字符串类型。POP3.top()函数  利用此函数,取出邮件的headers,如下:response, lines, octets = p.top(number , 0)  lines存储内容,下面先转化成Message类型(lines默认为标准字符串类型,仅供说明,以实际代码为准)message = email.message_from_string('n'.join(lines))已经生成Message类,可以利用头部信息来查看From, Subject等信息for header in 'From', 'To', 'Subject', 'Date':if header in message: print(header + ':' , message[header])   注意,此时的message[header]可能不会输出我们想看到的内容,有可能出现格式错乱问题,比如中英文的转化,所以还需要特殊来处理。处理方式请继续往下看IMAP部分。取出邮件所有信息  上面的top()函数只取出header信息以及根据参数确定的n行内容,如果用户希望查看邮件所有内容,那利用POP3.retr()函数取出response, lines, octets = p.retr(number)  还是将lines中的内容转换成Message类型:message = email.message_from_string('n'.join(lines))已经有了邮件所有信息,可以通过Message.get_payload()取出邮件正文了。  但是,get_payload()函数并不一定返回邮件正文。以下是官方说明:Return the current payload, which will be a list of Message objects when is_multipart() is True, or a string when is_multipart() is False.   在实际测试中,返回的就是a list of Message objects,这个问题困扰我很长时间,最终还是解决了,通过以下方法:复制代码maintype = message.get_content_maintype()if maintype == 'multipart':for part in message.get_payload(): if part.get_content_maintype() == 'text': mail_content = part.get_payload(decode=True).strip()elif maintype == 'text':mail_content = e.get_payload(decode=True).strip() 复制代码此时,mail_content就是邮件正文了.  当然,如果是中文的话,这件事仍未完,还需要将它转化未'gbk',利用如下方式:mail_content = mail_content.decode('gbk')到现在,基本已经大功告成了,能够取出邮箱中所有的邮件,并查看邮件的header内容和邮件正文了^_^三、完整代码:复制代码-- encoding:utf-8 ---- encoding:gbk --import email, getpass, poplib, syshostname = 'pop.gmail.com'user = 'myUserName@gmail.com'passwd = '*'p = poplib.POP3_SSL('pop.gmail.com') #与SMTP一样,登录gmail需要使用POP3_SSL() 方法,返回class POP3实例try:# 使用POP3.user(), POP3.pass_()方法来登录个人账户 p.user(user) p.pass_(passwd)except poplib.error_proto: #可能出现的异常print('login failed')else:response, listings, octets = p.list() for listing in listings: number, size = listing.split() #取出message-id number = bytes.decode(number) size = bytes.decode(size) print('Message', number, '( size is ', size, 'bytes)') print() response, lines, octets = p.top(number , 0) # 继续把Byte类型转化成普通字符串 for i in range(0, len(lines)): lines[i] = bytes.decode(lines[i]) #利用email库函数转化成Message类型邮件 message = email.message_from_string('\n'.join(lines)) # 输出From, To, Subject, Date头部及其信息 for header in 'From', 'To', 'Subject', 'Date': if header in message: print(header + ':' , message[header]) #与用户交互是否想查看邮件内容 print('Read this message [ny]') answer = input() if answer.lower().startswith('y'): response, lines, octets = p.retr(number) #检索message并返回 for i in range(0, len(lines)): lines[i] = bytes.decode(lines[i]) message = email.message_from_string('\n'.join(lines)) print('-' * 72) maintype = message.get_content_maintype() if maintype == 'multipart': for part in message.get_payload(): if part.get_content_maintype() == 'text': mail_content = part.get_payload(decode=True).strip() elif maintype == 'text': mail_content = e.get_payload(decode=True).strip() try: mail_content = mail_content.decode('gbk') except UnicodeDecodeError: print('Decoding to gbk error') sys.exit(1) print(mail_content) print() print('Delete this message? [ny]') answer = input() if answer.lower().startswith('y'): p.dele(number) print('Deleted')finally:print('log out') p.quit()

xuning715 2019-12-02 01:10:36 0 浏览量 回答数 0

问题

centos6.364位安全加固板系统会阻碍后台一些函数运行吗

cookieszhang 2019-12-01 21:29:50 6901 浏览量 回答数 0

回答

当你用header跳转时,header函数当前页面是会有$_POST参数的。但是这个跳转机制是通过写http头在客户端进行二次跳转,跳转以后的页面是不会带$_POST参数的,这时候你在登录页面判断if(!IS_POST)应该为true。也许你页面有重复产生其他逻辑问题。

吴孟桥 2019-12-02 02:37:17 0 浏览量 回答数 0

问题

IOS ASIFormDataRequest的用法

杨冬芳 2019-12-01 20:15:37 783 浏览量 回答数 1

回答

header函数内的String原则上会被直接加到HTTP头里面去。所以说,如果发送 Location : http://with.blank.com 这种并不符合HTTP规范的HTTP头,很可能整个HTTP Response都无法解析。幸运的是,PHP貌似为你修复了这个HTTP头格式问题。 关于HTTP头先发的问题,的确不应该在HTTP内容输出之后输出HTTP头。但是服务器会缓存输出,虽然你使用了echo或者print,但在那个时刻服务器还没有将这些内容作为HTTP报文输出,这个时候你仍然有机会修改HTTP头。 如果你只是单纯想要引发一个错误的话,很简单,在header()之前输出一个绝对超过缓存大小的HTTP内容就可以了。以下是不良示范。 <?php for($i = 0; $i < 1e5; $i++) echo $i; header("ABCABC: BCDBCD");

落地花开啦 2019-12-02 02:51:00 0 浏览量 回答数 0

问题

JS脚本运行报错,被调函数的形参总是提示未定义?报错

爱吃鱼的程序员 2020-06-22 22:15:06 0 浏览量 回答数 1

问题

iOS WebView 业务场景IP连接有哪几种方法(2)

猫饭先生 2019-12-01 21:49:55 1257 浏览量 回答数 0

回答

您好,这个提示是get_header()函数报错,建议您检查下您的程序

西秦说云 2019-12-02 03:21:09 0 浏览量 回答数 0

问题

服务器 500 Internal Server Error

1228898286691468 2019-12-01 19:22:06 113 浏览量 回答数 2

回答

php的执行1.cli方式,直接用php脚本执行php index.php2.经过服务器请求cgi方式curl -L http://127.0.0.1/index.phpheader函数跳转,是服务器响应给curl(相当于浏览器)做重定向,然后重新请求服务器因此php /www/index.php,header函数是不会起作用的进行跳转到index.php脚本文件,因为没有经过服务器。//index.phpheader("Location:demo.php");//demo.phpecho "this is demo";请求结果图

a123456678 2019-12-02 02:58:04 0 浏览量 回答数 0

回答

手机码字请原谅。百度一下 糖饼 的一个算法,或者imgReady之类的函数名。这是一个通过header第一时间获取图片尺寸的方法,无需等图片完全下载完毕。

杨冬芳 2019-12-02 02:35:43 0 浏览量 回答数 0

回答

在客户端不用js是为什么? php是在服务端的 ######用 header()函数不可以吗?###### <meta http-equiv="refresh" content="5;url=http://www.baidu.com"> ######为什么总是要纠结PHP实现呢?######对呀,这种东西,用js写,用户体验也好呀。用PHP,就用header完成吧

爱吃鱼的程序员 2020-06-01 13:42:43 0 浏览量 回答数 0

回答

这个可以直接使用PHP 中的 header("Location: http://www.baidu.com"); 如果想来点提示就在PHP中用JS跳转 你也可以取看下functions.php中的U()函数

小旋风柴进 2019-12-02 02:01:28 0 浏览量 回答数 0

问题

socket接包切数据时遇到的诡异问题

a123456678 2019-12-01 19:43:22 896 浏览量 回答数 1

问题

请教PHP中有关getimagesize的用法问题

落地花开啦 2019-12-01 19:52:08 937 浏览量 回答数 1

问题

socket接包切数据时遇到的诡异问题

a123456678 2019-12-01 20:11:56 811 浏览量 回答数 1

回答

15年初的时候就开始用类似方案,配合 SASS 写个函数,其中 $w 为设计稿的宽除以10。// rem 基准值,psd宽为750px$w: 75;@function rem($n) {@return ($n/$w) + rem;}为你的 SCSS 文件引入上面的函数后,你在写代码时就只要量取PSD中的真实像素,然后按以下方式书写即可。.header {width: rem(200); height: rem(400); margin-top: rem(-20);}如果以前使用的是媒体查询来设置根字体的font-size,可以参考我的另一个批量修改方法,工具是Sublime Text 3。

a123456678 2019-12-02 02:05:29 0 浏览量 回答数 0

问题

钉钉在安卓上报跨域问题,ios是正常的。

keysple 2019-12-01 20:58:56 2747 浏览量 回答数 2

问题

如何使用API

云栖大讲堂 2019-12-01 21:04:08 1458 浏览量 回答数 0

问题

PHP重定向时怎么带数据流?

小旋风柴进 2019-12-01 20:09:34 906 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播