模块里面写了点html,打印出来竟然在顶上问一下怎么回事
first of all, 这一切发生在drupal 6 一下这段代码是在模块里写的一段HTML。。。。在 .module 里指定的一个.inc里面 function subscribe_form() { global $user; if (!$user->uid){ ?>//判断没登陆的话显示登录框 <h1 class="title">Login to emagazine</h1> <br><br> <div class="sub">Please login or <a href="/user/register">register</a> to access the latest Oil and Gas Technology Emagazine.</div> <br> <?php //这一句是可以调出登录窗口 return user_login(&$form_state); //之前用下面这两句连窗口都跑到最顶上去了 /*$_GET['q'] = 'user/login'; print drupal_get_form('user_login');*/ } //判断如果登录并数据库里找得到这个人名的话跳转到其他页面 elseif(db_query('SELECT user_name FROM {subscribeIN} WHERE user_name = %d', $user->uid)){ header('location:/subscribe-download'); } else{ //最后登录过后没有名字在数据库的话填写表单,else这里是打印表单 } }
我就是很不解为什么会把这东西显示到最顶上,好像是先运行了这东西才调用主题模板。 按理来说不是这东西是在主题模板里面<?php print $content; ?> 才跑出来的么,print $content; 在主题模板里面不是div定好位置的了么,怎么会跑到出来。 试过把这段html变成return echo 出来,不过问题依旧。 请问如何修改,想在module内为某个页面加点特定的内容,是这样做么,直接写到.inc 函数里面? 在顺带问一下那个数据库elseif的判断,似乎总是为真(不管有数据表里有没有username)怀疑db_query 可以抽取到一些数组名啊什么的所以就总是真了。我应该用哪个函数呢?
非常感谢。要过年了,耶~~~ |
|
ssiufooLv 8
|
4 个回答
这个很显然。
drupal_get_form调用subcribe_form,碰到打印语句,就会打印出来,至于其他内容,其实是作为一个结构数组给drupal_get_form去生成html语句,碰到print才会打印出来。
至于sql语句,我对d6不熟悉,至少,user_name = %d, %d代表什么?
lingfeng2310Lv 9
据说这样是为了防恶意注入具体为嘛我也不知道
ssiufooLv 8
哪有你这样html 配合 php 写模块的。这是很不好的,你如果真的要输出html,也请把这字符串保存在 一个变量里面输出啊。
分头诗人Lv 17
谢谢诗人,新手嘛,一时神经错乱
搞掂了
ssiufooLv 8