如何通过在 url 中输入 user_id(无密码)来允许访问用户定义的变量


How to allow access to user-defined variables by entering user_id (no password) in url?

我有一个会员网站,需要登录,会员在其中使用特定的用户定义变量创建网页,以输入数据,这些数据将显示以供公众访问这些网页,每个网页都显示有关特定产品的信息。

有 7 个常见的网页模板,所有成员都可以选择这些模板来显示与他们、他们的公司和特定产品(七个之一)相关的自定义变量。他们将自定义信息输入到表单中,然后将这些值放在网页模板上的适当位置,以便潜在客户稍后查看

<input name='first_name' value='first_name'>
<input name='last_name' value='last_name'>
<input name='company_name' value='company_name'>
<input name='phone_number' value='phone_number'>
<input name='product_id' value='product_id'>
<input name='product_size' value='product_size'>
<input name='product_color' value='product_color'>
<input name='product_price' value='product_price'>

当使用 URL 中的user_id访问网页时,我需要能够访问与特定用户和用户提供的特定产品相关的这些变量的值,即类似于 http://domain.com/page_template_1/user_id/product_id。

目前,只有用户在登录时才能访问这些值。我需要访问特定 URL 的任何人都可以访问这些值,其中用户的自定义值显示产品信息。

查询可能如下所示:

<?php
$db_connection = new mysqli('localhost', 'root', 'root', 'test');
if ($db_connection->connect_errno) {
   echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$user_id = $_GET['user_id']; // from url
$product_id = $_GET['product_id']; // from url
// Make sure $db_connection matched your database connect script! Other wise it will come up with "Fatal error: Call to a member function prepare() on a non-object" error.
if($stmt = $db_connection->prepare("SELECT first_name, last_name, company_name, phone_number, product_id, product_size, product_color, product_price FROM table_name WHERE user_id = ? AND product_id = ?")) {
        $stmt->bind_param("ii", $user_id, $product_id);
        $stmt->execute();
        $stmt->bind_result($first_name, $last_name, $company_name, $phone_number, $product_id, $product_size, $product_color, $product_price);
        $stmt->fetch();
        echo $first_name;
        $stmt->close();
}
?>

您可能还想使用 .htaccess 文件重写您的 URL。 如果您希望您的网址漂亮。

希望这有帮助。

出于某种原因,除了以下内容之外,我无法为我工作。这可能是我页面上其余代码的构造方式。我不知道。但这是我所做的有效方法。不得不使用 $row->variable_name 而不是 $variable_name 有点痛苦。但它有效。

$db_connection = new mysqli("", "", "");
if ($db_connection->connect_errno) {
   echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " .       $mysqli->connect_error;
}
$id = $_GET['user_id'];
$query = mysql_query("SELECT * FROM table_name WHERE id = '$id' LIMIT 1") or die(mysql_error()); 
$row = mysql_fetch_object($query);
echo " // HTML GOES HERE
  $row->first_name
  $row->last_name
  $row->company_name
 ";