PcKULT.NET - La référence en informatique

  • Increase font size
  • Default font size
  • Decrease font size
  • default color
  • black color

PcKULT.NET - Recrute

PcKULT.NET est présentement à la recherche de passionnés d'informatique qui veulent se greffer à l'équipe de PcKULT.NET. Si l'aventure vous intéresse, veuillez communiquer avec nous.

webmaster@pckult.net

A List Apart a mis à votre disposition une tutoriel afin de faire de la mise en forme de tableau. Il vous explique comment intégré javascript, html et css afin d'obtenir de magnifique formulaire. L'équipe de PcKULT.NET c'est penché sur le sujet, et vous montreras ici comment utiliser les fonctions mises à votre disposition par l'équipe de alistapart.com.
 
 
 
 
 

Ajouter une icône (favicon) à votre site web

Email Imprimer PDF
De nos jours, lorsqu'on parcourt l'Internet, on rencontre de plus en plus de sites web avec une icône personnalisée appelée « Favicon » ou « Favorite icon ». Cela "aide" l'usager à identifier votre site web facilement dans ses favoris ou marque-pages.

favicon

Alors, comment ajouter votre icône à votre site web ? Lisez les lignes qui suivent et vous verrez que cela est très facile.
  • Tout d'abord, il vous faut une icône au format « .ico ».
  • Ensuite il suffit d'ajouter la ligne suivante entre les balises <head> de vos pages HTML :
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />

**
Remplacer favicon.ico par le nom de fichier de votre icône.
Transférer votre icône sur votre serveur web.
 

Récupérer l'adresse IP de vos visiteurs sous ASP.NET

Email Imprimer PDF
Si vous désirez suivre ou analyser qui accède à votre site web, vous pourrez récupérer l'adresse IP du visiteur sous VB.NET dans vos pages aspx. Par la suite vous pourrez en faire ce que vous voulez, la stocker dans une base de données pour créer un script de statistique ou autre. Alors, voici comment récupérer l'adresse IP du visiteur sous VB.NET.

Dim AdresseIP = Request.ServerVariables("REMOTE_ADDR")
Mis à jour ( Mercredi, 14 Mai 2008 09:28 )
 

PHP 6 et PDO : Prévoyer l'avenir

Email Imprimer PDF
PDO, vous connaissez ? Pour certain oui, mais pour la plus part d'entrevous cela ne représente que 3 lettres. Alors qu'est-ce que PDO ? Lisez le tutoriel qui suit et vous serez en mesure de répondre à cette question après lecture et vous serez aussi en mesure d'utiliser PDO par vous même.

Qu'est-ce que PDO ?

PDO est une interface qui est apparue dans les premières versions de PHP 5. Cette interface vise à améliorer l'interaction avec les bases de données sans avoir à vous préoccuper du SGBD qui est utilisé derrière. Ainsi, il vous sera possible de créer un code qui fonctionne autant sous MySQL que sous Oracle, SQL ou ODBC. On peut déjà entrevoir toutes les possibilités qui s'offriront à nous. Les jours de mysql_query et compagnie sont comptés!
 

Le Hic ?

Tout cela semble bien rose, mais la réalité en est un peu autrement. Un des seuls problèmes que cette interface apporte porte sur le respect des standards. Chaque SGBD à ses propres standards et chacun d'entre eux interprète une sélection de données de manière différente. C'est donc dire que pour une même sélection de données, pour chaque SGBD, on se retrouve avec une requête différente. Cela fait en sorte que pour chaque SGBD, le programmeur devra avoir écrit les requêtes appropriées.
 
Par contre, beaucoup de requêtes n'auront pas besoin d'être réécrite de par le mécanisme qui fonction derrière PDO et certaine plus spécifique devront l'être. De la un inconvénient qui se transforme en avantage!
 

Avantages

Pour ce qui est des autres avantages, on voit apparaître la gestion des exceptions et le fait que PDO est un objet. Alors si vous n'êtes pas familiarisé avec la programmation orientée objet, il sera temps pour vous de faire le saut.
 

Connexion au SGBD

Voici ici comment vous connectez à votre base de données grâce à PDO :
 
<?php
    $PARAM_hote='localhost'; // le chemin vers le serveur
    $PARAM_port='3306';
    $PARAM_nom_bd='sdz'; // le nom de votre base de données
    $PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
    $PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter
    $connexion = new PDO('mysql:host='.$PARAM_hote.' ; port='.$PARAM_port.' ; dbname='.$PARAM_nom_bd ,  $PARAM_utilisateur , $PARAM_mot_passe);
?>

Rien de bien compliqué! Cela ressemble jusqu'ici beaucoup à mysql_connect(). Ajoutons maintenant la gestion des exceptions.
 

Gestion des exceptions

Avec PHP 6, la gestion des exceptions sera au coeur de notre programmation. Avec PDO, il est extrêmement facile de gérer les exceptions générées par votre SGBD. Voici comment cela fonctionne :
 
<?php
    try{
        $connexion = new PDO('mysql:host='.$PARAM_hote.' ; port='.$PARAM_port.' ; dbname='.$PARAM_nom_bd ,  $PARAM_utilisateur , $PARAM_mot_passe);
    }
    catch(Exception $e){
        echo 'Erreur : '.$e->getMessage().'<br />';
        echo 'N° : '.$e->getCode();
    }
?>

Vous aurez alors l'affichage de l'erreur, le catch est chargé d'intercepter une éventuelle erreur apparue dans le try : vous pouvez donc très bien mettre un arrêt du script comme ceci :
   
<?php
try
{
        $connexion = new PDO('mysql:host='.$PARAM_hote.' ; dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
}
 
catch(Exception $e)
{
        echo 'Une erreur est survenue !';
        die();
}
?>

Vous pouvez mettre un traitement de l'erreur comme vous voulez.

Exécuter votre première requête grâce QUERY et EXEC

PDO fait la distinction entre deux familles de requêtes :
  • Les requêtes de sélection (SELECT) > Query
  • Les requêtes d'exécution (INSERT, UPDATE, DELETE) > EXEC


Utilisation de la méthode : EXEC

Supposons que nous souhaitons modifier le mot de passe d'un membre de votre intranet :
 
<?php
    $connexion = new PDO("mysql:host=$PARAM_hote ; dbname=$PARAM_nom_bd", $PARAM_utilisateur, $PARAM_mot_passe); // connexion à la BDD
     
    $connexion->exec("UPDATE membres SET password='12345' WHERE login='XYZ'");
?>

La requête ici sera bel et bien effectué, mais on peut en savoir plus sur le résultat de cette requête soit le nombre de ligne affecté par la requête :
 
<?php
    $nombre_changement = $connexion->exec("UPDATE membres SET password='12345'"); // On modifie ici le mot de passe de tous les utilisateurs
    echo "La requête à modifié : $nombre_changement lignes.";
?>


Utilisation de la méthode : query

Supposons ici que nous voulons récupérer tous les login de notre portail :
 
<?php
    $connexion = new PDO("mysql:host=$PARAM_hote ; dbname=$PARAM_nom_bd", $PARAM_utilisateur, $PARAM_mot_passe); // Connexion à la BDD
     
    $resultats = $connexion->query("SELECT login FROM membres ORDER BY login ASC");
    $resultats->setFetchMode(PDO::FETCH_OBJ); // On demande a l'objet PDO de nous retourner le résultat sous forme d'objet
    while( $ligne = $resultats->fetch() ) // On récupère la liste des login
    {
        echo 'Utilisateur : '.$ligne->login.'<br />'; // On affiche les login
    }
    $resultats->closeCursor(); // On ferme le curseur des résultats
?>

Deux choses ici peuvent porter à confusion :
  • setFetchMode : Permets d'indiquer sous quel format on souhaite récupérer les résultats de la requête précédente. Il existe plusieurs méthodes qui sont les suivantes : PDO::FETCH_ASSOC, PDO::FETCH_BOTH, PDO::FETCH_OBJ, ..., le mieux étant encore de lire la documentation pour savoir lequel vous préférerez utiliser. Personnellement si vous êtes habitué avec la commande mysql_fetch_object, PDO::FETCH_OBJ sera certainement la méthode que vous retiendrez.
  • closeCursor : Permets de fermer le curseur associé à un jeu de résultats, il doit donc être fermé une fois que vous avez fini de récupérer les résultats, et également être fermé avant toute autre requête. Il vous est donc conseillé de le mettre, sinon vous risquez des erreurs.
** En cas d'erreur de la requête, le résultat ne sera pas un objet, mais un booléen valant false qui représente alors une mauvaise requête ou un curseur qui n'a pas été fermé.
 

La méthode Prepare

La méthode Prepare comme sont nom l'indique, prépare une requête SQL à être exécutée en offrant la possibilité de mettre des marqueurs qui seront substitués lors de l'exécution de celle-ci.
 
Il existe deux types de marqueurs qui sont respectivement « ? » et les marqueurs nominatifs. Ces marqueurs ne sont pas mélangeables : donc pour une même requête, il faut choisir l'une ou l'autre des options.
 

Avantages de cette méthode :

  • Optimisation des performances pour des requêtes appelées plusieurs fois
  • Protection des injections SQL (plus besoin de le faire manuellement)

Exemple sans marqueur :

Imaginons que nous voulons récupérer une fois de plus, la liste des login.
   
<?php
    $requete_prepare = $connexion->prepare("SELECT login FROM membres"); // On prépare la requête
    $requete_prepare->execute();
    while($lignes=$requete_prepare->fetch(PDO::FETCH_OBJ))
    {
            echo $lignes->login.'<br />';
    }
?>

Exemple avec marqueur nominatif :

Imaginons maintenant que nous voulons un login bien précis.
   
<?php
    $requete_prepare=$connexion->prepare("SELECT identifiant FROM membres WHERE ID_membre = :id");
    $requete_prepare->execute(array(':id' => 1));
    $lignes=$requete_prepare->fetch(PDO::FETCH_OBJ);
    echo $lignes->identifiant.'<br />';
?>

Il est possible d'avoir plus d'un marqueur. Dans ces cas, il faut les rajouter dans la requête et dans execute.
 

Exemple avec marqueur « ? » :

Nous voulons toujours récupérer notre identifiant unique.   
<?php
    $requete_prepare=$connexion->prepare("SELECT identifiant FROM membres WHERE ID_membre = ? ");
    $requete_prepare->execute(array(1));
    $lignes=$requete_prepare->fetch(PDO::FETCH_OBJ);
    echo $lignes->identifiant.'<br />';
?>

Sécuriser vos requêtes sans utiliser les requêtes préparées

Comme nous l'avons vu précédemment, il est possible de préparer une requête, ce qui va la sécuriser sans intervention de votre part. Cependant certaines fois, il vous sera impossible de préparer vos requêtes. Dans ces cas, nous pourrons aussi facilement sécuriser le tout grâce à la méthode « quote » :
 
<?php
    $Connexion = new PDO(...); // Ouverture d'une connection
    $Connexion->query("SELECT id_membre FROM membres WHERE login = ".$Connexion->quote($login, PDO::PARAM_STR));
?>

La méthode quote, provenant de notre objet connexion permet de sécurisé notre paramètre. Cette méthode prend 2 arguments : Le premier obligatoire représente la valeur à protéger, et le second optionnel, représente le type de la valeur à protéger. Cette valeur peut-être :
  • PDO::PARAM_STR : Chaîne de caractères
  • PDO::PARAM_INT : Integer de SQL
  • PDO::PARAM_NULL : NULL de SQL
  • PDO::PARAM_BOOL : Booléen
  • PDO::PARAM_LOB : Objet large de SQL
** Lorsque vous utilisez cette méthode, n'englobez aucune valeur avec '', la méthode quote se le fera pour vous si nécessaire.
** Par défaut, si vous ne spécifiez pas de deuxième argument, la valeur PDO::PARAM_STR sera utilisée.

Voilà, cela fait une tour d'ensemble de ce qu'est PDO. Bien sûr, nous n'avons fait qu'effleurer le sujet. Il vous suffit alors de vous y plonger pour y voir toutes les possibilités de celui-ci.
Mis à jour ( Mardi, 13 Mai 2008 14:50 )
 

La pêche aux informations confidentielles : un fléau de plus en plus présent

Email Imprimer PDF
Dans les années 90, et même encore quelques fois de nos jours, une des techniques populaires pour arnaquer la population était la fraude téléphonique. Ils essayaient de vous vendre des bidules qui allaient vous sauver d’une maladie qui allait bientôt frapper la terre ou un placement 110 % sûr qui allait fructifier exponentiellement, mais au final vous vous retrouviez bec fin avec un bidule qui ne fonctionnait pas ou que vous ne receviez simplement jamais. Maintenant, nous faisons face à de nouvelles techniques, de nouvelles ruses pour escroquer la pauvre personne innocente à la maison : l’Internet. Dans ce petit article, nous tenterons de vous expliquer les dangers de l’hameçonnage sur internet, comment reconnaître une arnaque et que faire lorsque vous vous êtes fait avoir.
 
Avant toute chose, nous allons définir le terme pour bien comprendre le reste de cet article. L’hameçonnage, communément appelé « phishing » est simplement une technique d’usurpation d’identité. Le fraudeur vous envoi des courriels qui ressemblent étrangement à votre fournisseur Internet, banque, compte « Facebook » ou « MySpace » pour vous mettre en confiance et, par la suite, tente de récupérer vos identifiants et mots de passe pour ensuite utiliser votre identité sur les sites que vous fréquentez plus ou moins régulièrement. Il y a bien des motifs pour qu’un fraudeur réalise une attaque d’hameçonnage, mais dans la majorité des cas, il s’agit de l’appât du gain, bref votre argent.

Comme nous vous avons expliqué précédemment, une des motivations premières est carrément votre argent ou encore votre carte de crédit. Le fraudeur utilise dans 90 % des cas un courriel ayant l’apparence de votre institution financière. Lorsque vous visitez le site Web indiqué dans le courriel, la page est identique en tout point à la page de connexion de la banque ou du service bancaire. Le pauvre utilisateur, qui voit cela, pense qu’il s’agit de sa banque entre le numéro de carte et son mot de passe, mais par malchance, les informations de connexion se retrouvent entre les mains d’un fraudeur qui ne tardera pas à vider votre compte.
 
Une autre technique qui commence à se répandre, et ce fléau sera grave si l’attaque se développe plus, est le changement de vos liens favoris dans votre explorateur Internet (Internet Explorer ou Firefox sont les plus connus). Il s’agit d’une petite contamination qui ne fait rien de bien mal à l’ordinateur appart changer quelques liens dans vos favoris. Prenons en exemple, le lien de ebay.com qui pourrait devenir e-bay.com ou encore desjardins.com deviendrait desjjardins.com. Le problème est qu’il ne s’agit pas du site de votre service désiré, mais plutôt celui du fraudeur. Alors encore là, il tombe avec vos informations de connexion et les problèmes commencent à ce moment.
 
Encore pire, depuis peu, une nouvelle technique est née pour peaufiner l’attaque d’hameçonnage. Il s’agit de la technique de l’homme au milieu ou « man in the middle » en anglais. Cette ruse est simple. Lorsque l’utilisateur tente de se connecter sur le site du fraudeur (par exemple e-bay.com) et bien le fraudeur enregistre les informations dans une base de données et redirige vos informations vers le vrai site Web. Vous êtes donc connecté au véritable service sans vous poser de question. Le bémol est que le fraudeur à une fois de plus vos informations et vous n’en savez rien.
 
Une autre technique qui prend de l’ampleur très rapidement est la fausse infection. Avez-vous déjà vu une fenêtre ouvrir sur votre ordinateur vous disant que votre ordinateur courait un risque et que vous deviez acheter le logiciel qui est proposé pour corriger justement le problème (quel hasard)? Ou encore, une fenêtre revenant sans arrêt et qui vous proposes une numérisation et que durant la fameuse numérisation, il découvre quelques 50 virus sur votre poste? Alors là, encore une fois, il s’agit d’une tentative d’hameçonnage. Par contre, vous devez savoir que vous êtes probablement infecté par un « adware » ou publiciel en français. La solution a ce problème, mettre à jour votre système et faire une analyse approfondie de votre machine avec un bon antivirus et/ou antilogiciel espion.
 
Maintenant, que faire si nous tombons dans le panneau? Premièrement, pas de panique. Si nous avons un peu de chance, le fraudeur n’aura pas commencé à faire de transaction sur votre dos. Appelez sans tarder votre institution bancaire et expliquez-leur la situation. Ils bloqueront fort probablement toute transaction provenant de votre carte et vous en assigneront une nouvelle, avec un nouveau numéro. Si le fraudeur a fait des transactions, votre compagnie de crédit vous remboursera sans problème suite à une petite enquête. Les crimes informatiques sont maintenant chose courante pour eux et ils possèdent de bonnes techniques de vérification sur la fraude et dans la majorité des cas, ils vous remboursent en entier.
 
Une façon de se protéger : utilisez votre jugement. Aucune banque ne vous demandera votre mot de passe et numéro de carte. L’information est confidentielle et sauvegardée sur des serveurs cryptés. Une technique pour savoir si la connexion est sécurisée, vous pourrez voir que l’adresse du site Web commence avec un https:// plutôt qu’un http://. Ceci veut dire que le site a été vérifié par une société d’authentification sur Internet. Une autre chose très importante, ne donnez jamais votre numéro d’assurance sociale. Si vous devez le rentrer, assurez-vous qu’il s’agit d’un site légitime et encore une fois sécurisé par un https://. Généralement, les endroits qui vous le demandent le possèdent déjà et vous demandent seulement de rentrer les 3 derniers chiffres. Une autre protection serait de vous prémunir d’un logiciel anti-hameçonnage. Si vous cherchez un peu, vous en trouverez assez facilement. Généralement, la majorité des entreprises antivirus offrent leur propre logiciel anti-hameçonnage.
 
Alors avec les quelques conseils et techniques que nous vous avons offerts, nous vous recommandons d’être vigilants lorsque vous lirez vos courriels, que vous fassiez face à une fenêtre intempestive ou encore consultiez le site de votre banque. Une dernière petite chose, jamais, peu importe le cas possible imaginable, un fournisseur vous demandera de venir vous authentifiez sur son site Web pour une raison X, Y, Z. Il s’agit dans 99.99 % d’une arnaque pour vous voler vos informations personnelles et les utiliser à votre insu. Bonne chance.
 
À propos de SecureIP Solutions :

La sécurité de l’information est une chose importante pour les entreprises et les particuliers. C’est pourquoi SecureIP Solutions vous propose différents produits pour protéger vos précieuses données. Nous sommes fournisseur des produits Bit Defender pour le Canada, offrons un service de sauvegarde hors site, offrons des périphériques protégés, de la consultation et plus encore. Alors, utiliser nos solutions pour une meilleure protection!


SecureIP Solutions 
 
Olivier Forget
Président & fondateur
 
Mis à jour ( Mardi, 13 Mai 2008 12:15 )
 

Récupérer une base de donnée SQL Server 2005 lorsqu'on n'a que le .mdf

Email Imprimer PDF
Cela vous ait peut être jamais arrivé, mais un client ma appelé ce matin avec un problème majeur au niveau d'une base de données où pour une raison inconnue le fichier .ldf de SQL Server 2005 était illisible. Je me suis donc mis à la recherche d'une solution afin de régénéré la base de données à partir de son fichier .MDF et j'ai trouvé la solution. Je vous en fais donc part :
  • Créer une base de données portant le même nom et place au même endroit
  • Arrêter le service SQL
  • Remplacer le fichier .mdf par l’original
  • Démarrer le service SQL
  • Mettre la base de données en mode « emergency » :
sp_configure 'allow updates', 1 reconfigure with override alter database MA_BASE_DE_DONNÉE set emergency
  • Reconstruire le fichier de log :
alter database MA_BASE_DE_DONNÉE rebuild log on ( name=logname_log , filename= 'c:\program files\microsoft sql server\mssql.1\mssql\data\logname.ldf' )
  • Repasser la base de données en mode multi-user par l’interface ou par :
alter database MA_BASE_DE_DONNÉE set multi_user
  • Si la base n’est pas online :
alter database MA_BASE_DE_DONNÉE set online
  • Mettre le mode de récupération en FULL.
Mis à jour ( Lundi, 12 Mai 2008 12:32 )
 

Comment gérer l'élément actif d'un menu avec JavaScript et DOM

Email Imprimer PDF
Un lecteur m’a écrit afin de savoir s’il était possible de gérer l'élément actif de son menu du côté client lorsque celui-ci change de page. Ce lecteur veut en fait que l'élément de son menu représentant la page active soit d'une couleur différente et que celui-ci reprenne ça couleur lorsqu'il clique sur un autre lien de son menu. Et bien, pour ce lecteur, voici la solution à votre problème.
 
Vous avez certainement vu cet effet sur beaucoup de sites web. Plusieurs techniques s'offrent à vous. La plus part du temps, on fait cette technique du côté serveur, mais ici nous allons voir une méthode du côté client. Grâce à DOM il sera facile d'effectuer ce que l'on désire ici. Commençons d'abord par la partie HTML :
 
<ul>
    <li><a href="#">Accueil</a></li>
    <li><a href="#">Astuces</a></li>
    <li><a href="#">Tutoriaux</a></li>
    <li><a href="#">Articles</a></li>
</ul>

Ensuite, nous allons définir l'élément sélectionné par défaut en appliquant la classe «selected» à l'élément de notre choix.
 
<ul>
    <li><a href="#" class="selected">Accueil</a></li>
    <li><a href="#">Astuces</a></li>
    <li><a href="#">Tutoriaux</a></li>
    <li><a href="#">Articles</a></li>
</ul>

Passons maintenant à la partie JavaScript

Si on écrivait ce qui va s'exécuter en texte nous dirions : lorsqu'un internaute clique sur un lien du menu, nous allons supprimer la classe «selected» à tous les autres éléments et nous allons l'assigner à celui qui a été cliqué.
 
<ul>
    <li><a onclick="AjoutSelectionA(this);return false;" href="#" class="selected">Accueil</a></li>
    <li><a onclick="AjoutSelectionA(this);return false;" href="#">Astuces</a></li>
    <li><a onclick="AjoutSelectionA(this);return false;" href="#">Tutoriaux</a></li>
    <li><a onclick="AjoutSelectionA(this);return false;" href="#">Articles</a></li>
</ul>

Le mot clé «this» réfère au lien <a> qui a été cliqué qui celui-ci est passé en paramètre à notre fonction «AjoutSelectionA» qui est déclenché lors du clique sur un lien du menu. Voyons maintenant comment ajouter la classe «selected» au lien passé en paramètre à cette fonction :

<script type="text/javascript">
    function AjoutSelectionA(link) {
        link.className = "selected";
    }
</script>

Maintenant, notre fonction ajoute la classe «selected» à l'élément cliqué, mais le travail ne se termine pas ici. Il faut encore supprimer la classe «selected» des autres éléments.
 
<script type="text/javascript">
    function AjoutSelectionA(link) {
        var ul = document.getElementsByTagName("ul")[0];
        var allLinks = ul.getElementsByTagName("a");
        for (var i=0; i < allLinks.length; i++) {
            allLinks[i].className = "";
        }
        link.className = "selected";
    }
</script>

Voilà le tour est joué! J'espère que vous aurez compris le fonctionnement!
 
Page 1 de 180

Sondage

Comment trouvez-vous le nouveau design de PcKULT.NET
 

Publicités