Skip to content

Instantly share code, notes, and snippets.

@titomus
Last active February 13, 2022 17:29
Show Gist options
  • Save titomus/c7c275f44f10820dac0b22f425ec5f57 to your computer and use it in GitHub Desktop.
Save titomus/c7c275f44f10820dac0b22f425ec5f57 to your computer and use it in GitHub Desktop.
Comment créer une page de capture virale
<?php
/*
CONFIG
*/
$get_email = 'Email';
$get_name = 'Name';
$get_referby = 'refby';
$site_name = 'Titre';
$site_slogan = 'Slogan';
require('smplPDO.php');
function randomString() {
$length = 5;
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';
$string = '';
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(1, strlen($characters))];
}
return $string;
}
function track(){
global $get_referby;
if(isset($_GET[$get_referby]) && $_GET[$get_referby] !=""){
setcookie($get_referby, $_GET[$get_referby], time()+(3600*24*365));
}
}
function save_lead($email,$name,$rfby){
global $db;
$randomid = (isset($_COOKIE['randomid'])) ? $_COOKIE['randomid']: randomString();
if( $email!= false && !$db->exists( 'viral', array( 'email'=>$email ) ) ){
setcookie("randomid", $randomid, time()+(3600*24*365));
$db->insert( 'viral', array( 'name'=>$name, 'email'=>$email, 'randomid'=> $randomid, 'count' =>0 ,'entry_time' => time() ) );
# ajouter un point au referer
$refer_points = (int)get_points_id($rfby)+1;
//echo $refer_points;
$db->update( 'viral', array( 'count'=>$refer_points ), array('randomid'=>$rfby) );
mail_referer($rfby);
return $randomid;
}else if (isset($_COOKIE['randomid'])){
return $_COOKIE['randomid'];
}else{
return get_randomid($email);
}
}
function get_dir(){
$ssl = ( ! empty( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' );
$sp = strtolower( $_SERVER['SERVER_PROTOCOL'] );
$protocol = substr( $sp, 0, strpos( $sp, '/' ) ) . ( ( $ssl ) ? 's' : '' );
$url = $_SERVER['REQUEST_URI']; //returns the current URL
$parts = explode('/',$url);
$dir = $protocol.'://'.$_SERVER['SERVER_NAME'];
for ($i = 0; $i < count($parts) - 1; $i++) {
$dir .= $parts[$i] . "/";
}
return $dir;
}
/* DB */
function get_points($randomid){
global $db;
return $db->get_var( 'viral', array( 'randomid'=>$randomid ), 'count' );
}
function get_name($randomid){
global $db;
return ucfirst($db->get_var( 'viral', array( 'randomid'=>$randomid ), 'name' ));
}
function get_randomid($email){
global $db;
return $db->get_var( 'viral', array( 'email'=>$email ), 'randomid' );
}
function get_points_id($randomid){
global $db;
return $db->get_var( 'viral', array( 'randomid'=>$randomid ), 'count' );
}
#fonction pour extraire la position dans le cas d'un accès restreint
function find_place($randomid){
global $db;
$db->order_by = "`count` DESC";
$all = $db->get_all( 'viral');
//echo '<pre>'; var_dump($all);
$place = array_search($randomid, array_column($all, 'randomid'));
return (int)$place+1;
}
#fonction affichage pour concours.
function get_lasts(){
global $db;
$db->order_by = "`count` DESC";
$db->limit = "0,10";
return $db->get_all( 'viral');
}
function mail_referer($randomid){
global $db;
$user = $db->get_row( 'viral', array( 'randomid'=>$randomid ));
$sujet = ucfirst($user['name']).', un de vos amis vient de vous suivre';
$message = ucfirst($user['name']).',<br/><br/>Un de vos amis vient de s\'incrire sur notre site. Vous avec donc 1 chance de plus de recevoir votre accès rapidement. <br/>Partagez votre lien personnalisé le plus possible pour augmenter vos chances:<br/><a href="'.get_dir().'?'.$get_referby.'='.$user['randomid'].'">'.get_dir().'?'.$get_referby.'='.$user['randomid'].'</a><br/><br/> Amicalement';
$headerMail= "Content-Type:text/html;charset=UTF-8\n";//permet d'envoyer les message au format html
$headerMail.= "Content-Transfer-Encoding: 8bit\n";//permet d'envoyer les message au format html
$headerMail.='From: test <test@test.com>';//pour répondre au message
mail($user['email'],$sujet,$message,$headerMail);
}
@titomus
Copy link
Author

titomus commented Mar 10, 2017

Retrouvez l'article Comment créer une page de capture virale sur le blog.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment