2014-06-12 47 views
-1

我有一个“配置文件”页面的问题,用户将能够更改他们的用户名,电子邮件,名称,密码等,但它似乎有冲突,当我有超过1表单,因为他们都单独工作?在一个PHP页面上的多种形式

我可能会错过一些明显的东西,所以如果任何人都可以帮助我很欣赏它。

基地

<?php 
require 'core/init.php'; 
include 'includes/overall/header.php'; 
?> 
<h1><p>Hello <?php echo escape($user->data()->username); ?></a>!</p></h1> 

<h4><p>You joined the MMOunition community <?php echo escape($user->data()->joined); ?></a></p></h4> 

<alert_banner> 
<?php 
if(Session::exists('home')) { 
    echo '<p>', Session::flash('home'), '</p>'; 
} 
?> 
</alert_banner> 
<br /> 
<form action="changeusername.php" method="post"> 
    <div class="field"> 
     <label for="username">Username:</label> 
     <input type="text" name="username" id="username" value="<?php echo escape($user->data()->username); ?>"> 
     <input type="submit" value="Update"> 
     <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> 
    </div> 
</form> 


<br /> 
<form action="changepassword.php" method="post"> 
    <div class="field"> 
     <label for="password_current">Current password:</label> 
     <input type="password" name="password_current" id="password_current"> 
    </div> 
    <div class="field"> 
    <label for="password_new">New password:</label> 
     <input type="password" name="password_new" id="password_new"> 
    </div> 
    <div class="field"> 
     <label for="password_new_again">New password again:</label> 
     <input type="password" name="password_new_again" id="password_new_again"> 
     <input type="submit" value="Change"> 
     <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> 
    </div> 
</form> 


</br> 
<form action="changename.php" method="post">  
    <div class="field"> 
     <label for="name">Name:</label> 
     <input type="text" name="name" id="name" value="<?php echo escape($user->data()->name); ?>"> 
     <input type="submit" value="Update"> 
     <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> 
    </div> 
</form> 


<br /> 
<form action="changeemail.php" method="post">  
    <div class="field"> 
     <label for="email">Change email address:</label> 
     <input type="text" name="email" id="email" value="<?php echo escape($user->data()->email); ?>"> 
     <input type="submit" value="Update"> 
     <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> 
    </div> 
</form> 
<?php 
include 'includes/overall/footer.php'; 
?> 
+3

它们是如何冲突的?究竟发生了什么? –

+0

而不是执行文件链接到它的文件上的代码?但如果他们自己只是像它应该执行它,那么为什么有超过1每页是一个问题idk? – Parody

+0

当你说_it去them_,你的意思是浏览器加载(例如)'changeemail.php',但没有成功执行表单处理代码吗?总是在开发代码时,打开'display_errors',让错误显示在屏幕上 - 位于脚本的顶部(或像'init.php'这样的常见包含文件)'error_reporting(E_ALL); ini_set('display_errors',1);' –

回答

-1

你好,你还没有提到什么问题,您actualy面临但这似乎像这个问题是一个形式在服务器端的唯一标识

请看到这个帖子

Multiple HTML Forms on One Page

希望这会有所帮助;)

-1

将每个表单操作设置为当前页面,并使用隐藏输入来确定正在执行的操作。使用此方法将防止用户被放到不同的页面上,并将该操作放入可以使用或操作的变量中。

如果您希望为实际功能分别使用PHP脚本,请使用includes或require。

<form action="" method="post"> 
<div class="field"> 
    <label for="username">Username:</label> 
    <input type="text" name="username" id="username" value="<?php echo escape($user->data()->username); ?>"> 
    <input type="submit" value="Update"> 
    <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> 
    <input type="hidden" name="action" value="changeUsername"> 
</div> 
</form> 

然后,PHP脚本从POST获取操作并使用开关确定要调用哪些函数。

if (isset($_REQUEST['action'])) { 
    $action = $_REQUEST['action']; 
    switch ($action) { 
     case "changeUsername": 
      changeUsername(); 
      break; 
     case "changePassword": 
      ... 

如前所述,如果您希望将这些函数放在单独的php文件中,您可以使用include或require。

当用户更新信息时,可以方便地将用户放回到同一页面上,以便他们可以进行其他更新。

相关问题