[英]Create affliate URL in PHP
我正在嘗試創建一個像http://example.com/ref/referrer這樣的附屬網址。
我有 2 個 php 文件和一個 .htaccess 文件。 我有一個名為“referral”的數據庫表,它將用戶的用戶名存儲在名為“referrer”的字段中。
索引.php
<?php
$conn = new mysqli($servername, $username, $password, $dbname);
$query = "SELECT referrer FROM referral";
$result = $conn->query($query);
$ref=mysqli_fetch_array($result);
$referrer=$ref['referrer'];
//Create referral URL
$refurl="http://example.com/ref/$referrer";
?>
Welcome.php (通過引用鏈接訪問站點的人的登陸頁面)。
<?php
$referrer=mysqli_real_escape_string($con,$_GET["referrer"]);
$counted = "clicks";
//select user
$query="SELECT * FROM referral WHERE referrer='$referrer'";
$result=mysqli_query($con,$query) or die('error');
$user_ref=mysqli_fetch_array($result);
$user=$user_ref['user'];
if(!isset($_COOKIE[$counted])) {
//cookie for visitor
setcookie("clicks", $counted, time() + (86400 * 7), "/refer/"); //7days
//page view Counts
$sql = "UPDATE referral SET clicks=clicks+1 WHERE referrer='$referrer'";
$result_set=mysqli_query($con, $sql);
}
if($user_ref == false) {
echo 'Sorry, the user does not exist.';
} else {
echo You were referred by $user;
?>
.htaccess 文件
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ welcome.php?referrer=$1
問題是推薦網址不起作用。 單擊時,它應該加載歡迎頁面,但它沒有。 請有人告訴我我做錯了什么或錯過了什么?
看起來這是您的 mod-rewrite 語句。 ^([a-zA-Z0-9_-]+)$
將不匹配/ref/myrefcode01
。 你可以試試^ref/([a-zA-Z0-9_-]+)$
。
將 url 加載到字符串變量中不是重定向!
您需要使用header()
函數調用進行重定向
<?php
$conn = new mysqli($servername, $username, $password, $dbname);
$query = "SELECT referrer FROM referrals";
$result = $conn->query($query);
$ref=mysqli_fetch_array($result);
$referrer=$ref['referrer'];
//Create referral URL
$refurl="http://example.com/ref/$referrer";
// Now you have to tell PHP to redirect to this other page
header("Location: $refurl");
?>
根據@RiggsFolly 和@UTAlan 的建議,為了可能需要相同解決方案的其他人,這是我為使其工作所做的工作。
在您的數據庫中運行以下查詢
CREATE TABLE IF NOT EXISTS `referral` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(500) NOT NULL,
`referrer` varchar(500) NOT NULL,
`clicks` int(11) DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `user` (`user`,`referrer`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
數據庫文件
<?php
session_start();
error_reporting(0);
$dbhost = 'localhost';
$dbuser = 'admin';
$dbpass = 'password';
$dbname = 'my_database';
$con=mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) //connect to the database server
or die ("Could not connect to mysql because ".mysqli_error());
mysqli_select_db($con,$dbname) //select the database
or die ("Could not select to mysql because ".mysqli_error());
?>
索引.php
<?php
include('db.php');
$conn = new mysqli($servername, $username, $password, $dbname);
$query = "SELECT referrer FROM referral";
$result = $conn->query($query);
$ref=mysqli_fetch_array($result);
$referrer=$ref['referrer'];
//Create referral URL
$refurl="http://example.com/ref/$referrer";
//redirect to welcome page
header("Location: $refurl");
}
?>
Welcome.php //通過推薦鏈接訪問網站的人的登陸頁面
<?php
include('db.php');
$referrer=mysqli_real_escape_string($con,$_GET["referrer"]);
$counted = "clicks";
//select user
$query="SELECT * FROM referral WHERE referrer='$referrer'";
$result=mysqli_query($con,$query) or die('error');
$user_ref=mysqli_fetch_array($result);
$user=$user_ref['user'];
if(!isset($_COOKIE[$counted])) {
//cookie for visitor
setcookie("clicks", $counted, time() + (86400 * 7), "/ref/"); //7days
//page view Counts
$sql = "UPDATE referral SET clicks=clicks+1 WHERE referrer='$referrer'";
$result_set=mysqli_query($con, $sql);
}
if($user_ref == false) {
echo 'Sorry, the user does not exist.';
} else {
echo 'You were referred by $user';
?>
.htaccess 文件
RewriteEngine On
RewriteRule ^ref/([a-zA-Z0-9_-]+)$ welcome.php?referrer=$1
感謝 AllWebTuts ( http://allwebtuts.com ) 的 Santhosh Veer 的洞察力。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.