Jump to content

Moteur de recherche PHP CI Projet en Stand By


K3NSHI

Recommended Posts

Bonjour à tous,

 

J'ai travaillé avec des amis sur un projet de moteur de recherche écrit en PHP/MYSQL ces dernières années.

Je vous poste ce projet ici, je sais pas encore si les fichiers sources seront vendues ou exploités dans le futur.

L'idée de base était de pouvoir proposer un moteur de recherche pour pouvoir accéder rapidement à des profils d'utilisateurs et permettre une mise en relation rapide et sécurisée à travers un système de profilage et messagerie embarquée.

Exemple : Monsieur X veut contacter Madame Y pour un service Z, Monsieur X recherche Madame Y directement à travers l'App et peut entrer en contact avec elle à travers son profil et échanger de manière anonyme et sécurisée à travers le service.

L'APP fait appel à plusieurs fonctions avec la DB pour proposer instantanément des résultats à travers un système de suggestion automatique en temps réel.

 

spacer.png

 

VERSION ACTUELLE : V.6 STABLE

ECRITURE : PHP CODEIGNITER 

INTERFACES : OK, REQUEST AND SEARCH RESULTS

DATA INFORMATIONS : MONGODB, DB STABLE

 

PS : La web APP contient également des codes de tracking pour permettre de comprendre et d'analyser le comportement des utilisateurs dès leurs arrivés, pour des raisons de sécurité je ne posterai donc pas ces codes.

 

Aperçue des fichiers du projets à la racine :

 

 

spacer.png

Fichier CONFIG

 

 

<?php 
/**
 * Configuration
 */

ini_set("display_errors", "on");

/**
 * Site URL
 * No '/' at the end
 */
define("HOST", "//search.sim");

$host = getenv('OPENSHIFT_MYSQL_DB_HOST');
$port = getenv('OPENSHIFT_MYSQL_DB_PORT');
$user = getenv('OPENSHIFT_MYSQL_DB_USERNAME');
$pass = getenv('OPENSHIFT_MYSQL_DB_PASSWORD');
$db = getenv('OPENSHIFT_GEAR_NAME');
?>

 

Fichier GET RESULT :

 

***********************************************************************************/
/**
*		Constante prédéfinie `defined('EXEC') or die('Accès direct interdit !');` 
*		qui est vérifié dans les fichiers inclus pour empêcher l'accès direct 
**/
define('EXEC',1) or die('No access');
// Enregistre l'heure de début et l'utilisation de la mémoire.
$startTime = microtime(1);
$startMem  = memory_get_usage();//Indique la quantité de mémoire utilisée par PHP

$separator = DIRECTORY_SEPARATOR;
global $separator;

/** Définir BASE_PATH comme réspertoire de ce fichier */
if ( ! defined( 'PATH_BASE' ) ) {
	define( 'PATH_BASE', dirname( __FILE__ ).$separator);//C:\serveur\...\www\cimmac\
}
// Global definitions
$parts = explode($separator, PATH_BASE);
/** Définir PATH_ROOT comme réspertoire racine, il est défini pour le dossier admin */
if ( ! defined( 'PATH_ROOT' ) ) {
	define( 'PATH_ROOT', implode(DIRECTORY_SEPARATOR, $parts));//C:\serveur\...\www\cimmac\
}
/** Définir ROOT comme réspertoire principal du serveur */
if ( ! defined( 'DIR_ROOT' ) ) {
	define( 'DIR_ROOT', dirname(PATH_ROOT).$separator);//C:\serveur\...\www\
}

/** 
	On définit le dossier includes\ : 
	
**/
if ( ! defined( 'INCLUDES' ) ) {
	define( 'INCLUDES', PATH_BASE.'includes'.$separator);//C:\serveur\...\www\cimmac\includes\
}
/** 
	On définit le dossier content\ : 
	
**/
if ( ! defined( 'CONTENT' ) ) {
	define( 'CONTENT', PATH_BASE.'content'.$separator);//C:\serveur\...\www\cimmac\includes\
}
if(isset($_POST['q']) && isset($_POST['formIndex']) && $_POST['formIndex']=='search'){
include(INCLUDES.'api.defines.php');
include(INCLUDES.'api.functions.php');
include(INCLUDES.'api.connect.php');
$keyword = trim($_POST['q']);	
$Results = $Mysql->TabResSQL('SELECT * FROM categoriesarticles WHERE Cat_p LIKE "%'.$keyword .'%" ORDER BY Cat_p ASC LIMIT 0, 10');

$NbrResults = count($Results);
$li  ='';
	if($NbrResults!=0){
		
		foreach($Results as $row){
		$li .='<li><a id="result-item" href="'.base_url().'search?q='.$row['categorie_id'].'">'.$row['Cat_p'].'</a></li>';
		}
		
	}
	echo $li;
}elseif(empty($_POST['q']) && !empty($_POST['formIndex'])){
	echo 'Aucun résultat';
}else{
header('HTTP/1.0 403 Forbidden');
die();
}

 

Tour d'horizon sur le fichier HTTP Request.

 

***********************************************************************************/

/**

*		Constante prédéfinie `defined('EXEC') or die('Accès direct interdit !');` 

*		qui est vérifié dans les fichiers inclus pour empêcher l'accès direct 

**/

defined('EXEC') or die('No access');



class HttpRequest

{

    /**

     * default controller class

     */

    const CONTROLLER_CLASSNAME = 'Index';



    /**

     * position of controller

     */

    protected $controllerkey = 0;



    /**

     * site base url

     */

    protected $baseUrl;



    /**

     * current controller class name

     */

    protected $controllerClassName;



    /**

     * list of all parameters $_GET and $_POST

     */

    protected $parameters;



    public function __construct()

    {

        // set defaults

        $this->controllerClassName = self::CONTROLLER_CLASSNAME;

    }



    public function setBaseUrl($url)

    {

        $this->baseUrl = $url;

        return $this;

    }



    public function setParameters($params)

    {

        $this->parameters = $params;

        return $this;

    }



    public function getParameters()

    {

        if ($this->parameters == null) {

            $this->parameters = array();

        }

        return $this->parameters;

    }



    public function getControllerClassName()

    {

        return $this->controllerClassName;

    }



    /**

     * get value of $_GET or $_POST. $_POST override the same parameter in $_GET

     * 

     * @param type $name

     * @param type $default

     * @param type $filter

     * @return type 

     */

    public function getParam($name, $default = null)

    {

        if (isset($this->parameters[$name])) {

            return $this->parameters[$name];

        }

        return $default;

    }



    public function getRequestUri()

    {

        if (!isset($_SERVER['REQUEST_URI'])) {

            return '';

        }



        $uri = $_SERVER['REQUEST_URI'];

        $uri = trim(str_replace($this->baseUrl, '', $uri), '/');



        return $uri;

    }



    public function createRequest()

    {

        $uri = $this->getRequestUri();



        // Uri parts

        $uriParts = explode('/', $uri);



        // if we are in index page

        if (!isset($uriParts[$this->controllerkey])) {

            return $this;

        }



        // format the controller class name

        $this->controllerClassName = $this->formatControllerName($uriParts[$this->controllerkey]);



        // remove controller name from uri

        unset($uriParts[$this->controllerkey]);



        // if there are no parameters left

        if (empty($uriParts)) {

            return $this;

        }



        // find and setup parameters starting from $_GET to $_POST

        $i = 0;

        $keyName = '';

        foreach ($uriParts as $key => $value) {

            if ($i == 0) {

                $this->parameters[$value] = '';

                $keyName = $value;

                $i = 1;

            } else {

                $this->parameters[$keyName] = $value;

                $i = 0;

            }

        }



        // now add $_POST data

        if ($_POST) {

            foreach ($_POST as $postKey => $postData) {

                $this->parameters[$postKey] = $postData;

            }

        }



        return $this;

    }



    /**

     * word seperator is '-'

     * convert the string from dash seperator to camel case

     * 

     * @param type $unformatted

     * @return type 

     */

    protected function formatControllerName($unformatted)

    {

        if (strpos($unformatted, '%20') !== false || strpos($unformatted, '?') !== false) {

			$formattedName =  str_replace('/%20/','',$unformatted);

				

			$formattedName =  explode('?', $formattedName);

            $CountformattedName = count($formattedName);

			$formattedName=ltrim($formattedName[0]);

			

        }elseif (strpos($unformatted, '?') !== false){

			$formattedName =  explode('?', $unformatted);

            $CountformattedName = count($formattedName);

			$formattedName=ltrim($formattedName[0]);

		}else {

            // string is one word

            $formattedName = $unformatted;

        }



        // if the string starts with number

        if (is_numeric(substr($formattedName, 0, 1))) {

            $part = $part == $this->controllerkey ? 'controller' : 'action';

            throw new Exception('Incorrect ' . $part . ' name "' . $formattedName . '".');

        }

        return ltrim($formattedName, '_-');

    }

}

 

 

Pour le moment le projet est toujours en Stand By après 3 ans de développement.

Les codes sources valent un certain prix, j'ai cherché des mois entiers des codes à peu près similaires je n'ai rien trouvé de comparable même sur les plus grands forums de développement open source (github, phpprojets etc...)

Je posterai ici les updates mais pour ceux qui sont intéressés pour ce projet n'hésitez pas à me contacter.

 

 

Salutations,

Edited by K3NSHI (see edit history)
Link to post
  • K3NSHI changed the title to Moteur de recherche PHP CI Projet en Stand By

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.