Php 将表中的用户id传递到另一页

Php 将表中的用户id传递到另一页,php,html,Php,Html,我在表中报告了一个用户列表。第一列包含用户id,我想将其传递到另一个显示用户详细信息的页面。我不想用$\u GET通过URL传递它。我该怎么做?我只能使用HTML和PHP。我看到的一个帖子似乎在正确的轨道上,但我无法让它发挥作用。以下是我所拥有的: <h1>Maintain Users</h1> <div id="ir-report"> <table class="table"> <tr class = "table

我在表中报告了一个用户列表。第一列包含用户id,我想将其传递到另一个显示用户详细信息的页面。我不想用$\u GET通过URL传递它。我该怎么做?我只能使用HTML和PHP。我看到的一个帖子似乎在正确的轨道上,但我无法让它发挥作用。以下是我所拥有的:

<h1>Maintain Users</h1>
<div id="ir-report">
    <table class="table">
        <tr class = "table tr">
            <th class="table th">User Id</th>
            <th>Username</th>
            <th>Name</th>
            <th>Email</th>
            <th>Activated?</th>
            <th>Type</th>
            <th>Account Nbr</th>
        </tr>
        <?php while ($row = mysqli_fetch_assoc($query))
        {?>
        <tr class="table tr">
            <td class ="table td" onclick="submit_id($row['user_id'])"><img src="images\editpensil.jpg" alt="UserId" width="25" height="25"></td>
            <td><?php echo $row['username'] ?></td>
            <td><?php echo $row['first_name'] ?></td>
            <td><?php echo $row['email'] ?></td>
            <td><?php echo $row['active'] ?></td>
            <td><?php echo $row['type'] ?></td>
            <td><?php echo $row['acct_nbr'] ?></td>
        </tr>
        <?php } ?>
        </table>
</div>
但是当我点击编辑图标(editpulsil.jpg)时,什么也不会发生。应用程序似乎没有尝试执行任何操作。我错过了什么谢谢

  • 您正在混合PHP和JS。在
    onclick
    处理程序中调用的函数必须是JS,不能是php

  • 通过URL传递id有什么问题?这显然是唯一简单实用的解决办法。备选方案包括:

    • 使用Cookie,但如果用户在您的站点上打开多个选项卡/窗口,或想要将页面添加到书签,或在重新启动浏览器后重新打开页面,则会造成混乱。这真的没有多大帮助

    • 使用某种指向用户id的其他id,但这只是添加了另一层而已


  • 除非您确切地告诉我们您不想通过URL传递id的原因,否则很难提出任何建议。

    您不能从
    onclick
    属性或任何其他
    on
    属性调用PHP函数。这些函数必须是Javascript函数

    如果您确实需要/不想通过GET传递id,您可以使用
    操作
    将表包装在
    中,设置为要将其发送到的页面,使用
    方法
    POST
    和隐藏的输入字段。我知道你的问题说你只能使用HTML和PHP;如果没有Javascript,唯一可以做到这一点的方法是向表单/表中添加一个按钮。您可以使用CSS对其进行样式设置,使其看起来像一个链接,或任何与按钮不同的内容

    没有Javascript的示例:

    <form action="index.php" method="post">
      <tr class="table tr">
        <td class ="table td">
          <img src="images\editpensil.jpg" alt="UserId" width="25" height="25">
        </td>
        <td><?php echo $row['username'] ?></td>
        <td><?php echo $row['first_name'] ?></td>
        <td><?php echo $row['email'] ?></td>
        <td><?php echo $row['active'] ?></td>
        <td><?php echo $row['type'] ?></td>
        <td><?php echo $row['acct_nbr'] ?></td>
        <td><input type="submit" value="Link to" /></td>
      </tr>
      <input type="hidden" name="user_id" value="<?php echo $row['user_id'] ?>" />
    </form>
    
    以及以下Javascript,尽管这只适用于IE9+:

    var links = document.getElementsByClassName('user_id_link');
    
    for (link in links) {
      link.addEventListener('click', function() {
        var formId = 'user_form_' + this.userid;
        document.getElementById(formId).submit();
      }, false);
    }
    

    或者更干净的jQuery版本,它具有更好的浏览器兼容性,对于web开发人员来说是一个非常宝贵的工具包:

    HTML/PHP:

    <form action="index.php" method="post" id="user_form_<?php echo $row['user_id'] ?>">
      <tr class="table tr">
        <td class ="table td user_id_link" data-userid="<?php echo $row['user_id'] ?>">
          <img src="images\editpensil.jpg" alt="UserId" width="25" height="25">
        </td>
        <td><?php echo $row['username'] ?></td>
        <td><?php echo $row['first_name'] ?></td>
        <td><?php echo $row['email'] ?></td>
        <td><?php echo $row['active'] ?></td>
        <td><?php echo $row['type'] ?></td>
        <td><?php echo $row['acct_nbr'] ?></td>
      </tr>
      <input type="hidden" name="user_id" value="<?php echo $row['user_id'] ?>" />
    </form>
    
    <form action="index.php" method="post">
      <tr class="table tr">
        <td class ="table td user-id-link">
          <img src="images\editpensil.jpg" alt="UserId" width="25" height="25">
        </td>
        <td><?php echo $row['username'] ?></td>
        <td><?php echo $row['first_name'] ?></td>
        <td><?php echo $row['email'] ?></td>
        <td><?php echo $row['active'] ?></td>
        <td><?php echo $row['type'] ?></td>
        <td><?php echo $row['acct_nbr'] ?></td>
      </tr>
      <input type="hidden" name="user_id" value="<?php echo $row['user_id'] ?>" />
    </form>
    

    onclick=“submit_id()”
    调用的是JavaScript函数,而不是PHP函数。查看
    的HTML源代码,它将显示它的传递方式;作为
    我不想通过URL传递用户id,因为我不希望其他人能够编辑URL并访问其他人的个人资料。我设计了一种动态加密方法,这会让人很难做到,但没有什么是不可能的。我同意通过URL传递它是直截了当的,我只是认为其他人肯定也有我同样的安全顾虑,而且由于这种操作必须相当常见,因此必须有一种直截了当的替代方法,使用$\u POST或我刚刚缺少的东西。希望这能解释这一点。谢谢。把它改成帖子只会稍微难一点。如果您想让用户编辑自己的个人资料,那么您必须使用某种形式的身份验证(通常涉及cookie),这样您就可以知道用户的id,而无需通过URL或任何其他方式传递。该表列出了许多用户,其目的是让管理员选择一个并重定向到特定于该用户的页面,在该页面上可以修改该用户的配置文件。例如,访问/安全级别的更改。不能允许用户自行选择访问级别,这将无法达到目的。感谢您的全面回复,我将在上午进行尝试。将表行包装成表单是有意义的。现在我不太明白你到底分享了什么,但我期待着学习更多的技巧。你能告诉我“/”的意义是什么吗?我不知道正斜杠是干什么用的--谢谢。这是一个在没有单独结束标记的情况下结束HTML标记的简写。在HTML中,
    input
    标记(如
    img
    )不应该有结束标记。XHTML基本上是一种更严格、更兼容的HTML,它要求您在标签上有
    />
    。你不必拥有它,但它被认为是一种良好的做法。这就是答案。我在那里98%的时间都是吉姆给我的。我咬紧牙关,更加熟悉jQuery,这是最后一个(也是推荐的)解决方案。最终,为了让它发挥作用,我不得不做两个改变。我对最初的建议进行了评论,并补充了我必须修改的内容。工作起来很有魅力。谢谢你,吉姆!很乐意帮忙。看起来该编辑已被审阅者拒绝。对于
    用户id链接
    使用类而不是id的目的是因为id应该是唯一的。看起来页面上有多个这样的表,所以通过分配一个类并注册click事件,每个表都将提交其所属的表单。哦,好吧。。。“男人”可以拒绝编辑,如果他愿意的话。其中有3人。简单的事实是,如果没有三者中的两个,代码就无法工作。我的代码现在在这三种情况下都能正常工作。非常感谢你的帮助。
    <form action="index.php" method="post">
      <tr class="table tr">
        <td class ="table td user-id-link">
          <img src="images\editpensil.jpg" alt="UserId" width="25" height="25">
        </td>
        <td><?php echo $row['username'] ?></td>
        <td><?php echo $row['first_name'] ?></td>
        <td><?php echo $row['email'] ?></td>
        <td><?php echo $row['active'] ?></td>
        <td><?php echo $row['type'] ?></td>
        <td><?php echo $row['acct_nbr'] ?></td>
      </tr>
      <input type="hidden" name="user_id" value="<?php echo $row['user_id'] ?>" />
    </form>
    
    $(function() {
      $('.user-id-link').on('click', function() {
         $(this).closest('form').submit();
      });
    });