Aller au contenu

Moteur de recherche PHP CI Projet en Stand By


K3NSHI

Messages recommandés

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,

Modifié par K3NSHI
Lien à poster
  • K3NSHI changed the title to Moteur de recherche PHP CI Projet en Stand By

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant


×
×
  • Créer...

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.