PHP - 在包含在另一页面中的页面内提交表单

时间:2015-04-22 14:11:44

标签: javascript php jquery html forms

我正在使用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>

0 个答案:

没有答案