initial commit
This commit is contained in:
63
function.php
Normal file
63
function.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
require "conn.php";
|
||||
|
||||
function verifyID($pid){
|
||||
require "conn.php";
|
||||
$stmt = $GLOBALS['conn']->prepare("SELECT * FROM directories WHERE fromsite = :pid");
|
||||
$stmt->bindParam(":pid", $pid);
|
||||
$stmt->execute();
|
||||
$return = $stmt->fetch(PDO::FETCH_OBJ)->fromsite;
|
||||
return ($return!=NULL)?false:true;
|
||||
}
|
||||
|
||||
function randID($length = 6) {
|
||||
do{
|
||||
if(function_exists("random_bytes")){
|
||||
$bytes = random_bytes(ceil($length/2));
|
||||
}elseif(function_exists("openssl_random_pseudo_bytes")){
|
||||
$bytes = openssl_random_pseudo_bytes(ceil($length/2));
|
||||
}else{
|
||||
throw new Exception("No cryptographically secure random function available.");
|
||||
}
|
||||
$x = substr(bin2hex($bytes), 0, $length);
|
||||
$id = gmp_strval(gmp_init($x, 36), 62);
|
||||
} while(!verifyID($id));
|
||||
return $id;
|
||||
}
|
||||
|
||||
function hyperSearch($text){
|
||||
preg_match_all("#((((-|_){0,}\w)+\.([a-zA-Z]+){2,})|((((http)|(https)):\/\/){1}((-|_){0,}\w)+\.([a-zA-Z]+){2,}))((\w+|-|_|\/|\.)+){0,}#", $text, $match);
|
||||
if($match[0]==NULL){
|
||||
return false;
|
||||
}else{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if(hyperSearch($_POST["url"]) == false){
|
||||
header("Location: /?error=hps");
|
||||
exit();
|
||||
}
|
||||
|
||||
$stmt = $conn->prepare("SELECT * FROM directories WHERE tosite = :site");
|
||||
$stmt->bindParam(":site", $_POST["url"]);
|
||||
$stmt->execute();
|
||||
$return = $stmt->fetch(PDO::FETCH_OBJ)->fromsite;
|
||||
$siteExists = ($return==NULL)?false:$return;
|
||||
|
||||
if($siteExists == false){
|
||||
$fromurl = randID();
|
||||
$tourl = $_POST["url"];
|
||||
$stmt = $conn->prepare("INSERT INTO directories (fromsite, tosite) VALUES (:f, :t)");
|
||||
$stmt->bindParam(":f", $fromurl);
|
||||
$stmt->bindParam(":t", $tourl);
|
||||
$stmt->execute();
|
||||
if(!$stmt){
|
||||
header("Location: /?error=stmt");
|
||||
}else{
|
||||
header("Location: /done.php?code=$fromurl");
|
||||
}
|
||||
}else{
|
||||
header("Location: /done.php?code=$siteExists");
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user