我正在使用PHP开发一个Web应用程序。目前,我的项目文件夹的结构是这样的(非常简化):
/myproject
index.php
head.php
body.php
footer.php
css/
js/
src/
common/
security/
sessions.php
..some others..
main/
login.php
signup.php
..some others..
conf/
..some conf files..
utils/
..some utils files..
app/
...the app itself here..
accounts/
settings.php
changepasswd.php
..some others files
Web视图是按照一体化模式开发的,使用FullPage.js作为部分资源管理器。
因此,index.php文件服务于主体和页脚(包括正确的.php脚本)。登录和注册表单(显然)分别由login.php和signup.php提供,使用AjaxForm插件。
当用户登录时,index.php呈现head.php,body.php和footer.php;根据$ _SESSION ['user_name']是否存在,每个都被编码为不同的标签/部分。
嗯......直接问题:当用户登录时,会出现Settings
部分。在其中,我把这些行:
require '../src/security/sessions.php';
SE_session_start(); // my personal function to start safe sessions
....some other code where i query the DB to know currents settings...
<ul class="alt" id="ul-settings">
...some others <li></li> with others forms and informations...
<li>
<form> // i wrapped all into a form to avoid confution but i will not use it
<input type="checkbox" id="pr" onclick="DropDownPassReset('prDDM')" />
<label for="pr">Change password</label>
</form>
<div id="prDDM" style="display: none;">
<form method="post" action="accounts/passwdchange.php" id="passwdchange">
<input type="password" name="oldpasswd" placeholder="Old password..."/>
<input type="password" name="newpasswd" placeholder="New password..."/>
<input type="password" name="newpasswdr" placeholder="Enter new password agian..."/>
<button class="button special icon" onclick="changepasswd();">Process</button>
</form>
</div>
</li>
</ul>
你可以理解: 第一个是出于设计目的。当用户点击它时,javascript函数使“更改密码”可见。
问题: 当我尝试提交表单时(仍然使用ajaxForm,这不是问题,因为我像往常一样提交相同的问题),没有$ _POST数据被发送到表单 - 动作脚本。
在“passwdchange.php”(实际管理密码更改)中,如果我尝试访问$ _POST ['oldpasswd']或任何其他输入,我得到(来自xdebug):
PHP Notice: Undefined index: oldpasswd
我已尝试过的内容:
<input type="submit" />
),不使用ajaxForm插件。<input type="submit" />
添加"visibility:hidden"
并使用ajaxForm提交。但仍然没有运气...... :( 我真的不知道发生了什么......
感谢。
编辑:这是changepasswd()
函数:
function changepasswd() {
$('#passwdchange').ajaxForm(function(response) {
if (response != '') {
cAlert.render(response);
}
$('#passwdchange').resetForm();
});
}
另一个编辑(最后,我保证:))
这是我在根文件夹中的.htaccess:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]
<Files *.php>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Files>
<Files index.php>
Order Allow,Deny
Allow from all
</Files>
<Files activation.php>
Order Allow,Deny
Allow from all
</Files>