mardi 8 janvier 2013

Installation et déploiement d'IIS 7 sous windows 7


IIS ou Internet Information Services, communément appelé IIS, est le logiciel de serveur services Web (ou FTP, SMTP, HTTP etc.) de la plateforme Windows NT.

Solution 1.

Pour installer IIS 7.5 sur Windows 7Vous pouvez effectuer cette procédure à l'aide de l'interface utilisateur ou d'un script. Utilisation de l'interface utilisateur

  • Cliquez sur Démarrer, puis sur Panneau de configuration.
  • Dans le Panneau de configuration, cliquez sur Programmes, puis sur Activer ou désactiver des fonctionnalités de Windows.
  • Dans la boîte de dialogue Fonctionnalités de Windows, cliquez sur Services Internet (IIS), puis sur OK.

Solution 2.


Un simple script peux suffir pour installer IIS ainsi ques ses dépendances :

start /w pkgmgr /l:log.etw /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-Security;IIS-BasicAuthentication;IIS-URLAuthorization;IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS-WebServerManagementTools;IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;IIS-LegacySnapIn;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI



Bonne année 2013




mercredi 25 juillet 2012

Récuperer l'url de la page courante ASP.NET/C#

Plus simple qu'on ne peux l'imagine : 
 
Chemin complet de la page web 
 
string url = HttpContext.Current.Request.Url.AbsoluteUri;
Ce ci vas donner dans mon cas  
http://siteweb.com/repertoire/page_test.aspx

 
Chemin relatif de la page web  
string path = HttpContext.Current.Request.Url.AbsolutePath;
repertoire/page_test.aspx

string host = HttpContext.Current.Request.Url.Host;
http://siteweb.com

lundi 2 juillet 2012

Rafraishir une page après x sécondes en asp.net

Chronométrer l’exécution d'un page m'a semblé difficile quand j'y ai pensé pour la première fois. J'ai pensé à des scripts plus compliqué alors que la solution était dans mes mains depuis longtemps sans que je le sache.

En effet, l'idée maitresse reviens à demander à la page de se relancer elle même après x secondes et de se  rediriger vers elle même. Dans le code behind, je me suis proposé décrire les lignes qui suivent:

Code Behind  :



 protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                Auto_Refresh_Page();
            }

        }

        void Auto_Refresh_Page()
        {
            string Page_Url = HttpContext.Current.Request.Url.AbsoluteUri;
            Response.AddHeader("REFRESH", string.Format("3; URL = {0}", Page_Url));
        }


Si l'article vous a intéressé , comme d'habitude , n'hésitez pas à nous contacter :

Phone : 00243 997647154
Mail : monsar04[at]gmail.com


samedi 30 juin 2012

Menu deroulant horizontal css/html/javascript

Menu horizontal css

 

La partie html


<html><head><title>menu déroulant en css</title>
<meta http-equiv=content-type content="text/html; charset=iso-8859-1">

<link type="text/css" rel="stylesheet" href="style_menu_deroulant_horizontal.css" />

</head>
<body>

<div id="monmenu">
<h2>menu à déploiement horizontal</h2>

<ul class=niveau1>
  <li>Menu 1
    <ul class=niveau2>
        <li class=plus>
        <a href="#">
            Titre du menu 1
        </a>
            <ul class=niveau3>
      <li><a href="#">  Sous titre 1 du menu 1 </a> </li>
      <li><a href="#">  Sous titre 2 du menu 1 </a> </li>
      <li><a href="#">  Sous titre 3 du menu 1 </a> </li>
      <li><a href="#">  Sous titre 4 du menu 1 </a> </li>
     
      </ul>
     
      </li>
    <li>
    <a href="#">
    Titre du menu 2
    </a>
   
    <ul class=niveau3>
   
      <li><a href="#">  Sous titre 1 du menu 2 </a> </li>
      <li><a href="#">  Sous titre 2 du menu 2 </a> </li>
      <li><a href="#">  Sous titre 3 du menu 3 </a> </li>
      <li><a href="#">  Sous titre 4 du menu 4 </a> </li>   
     
    </ul>
   
    </li>
    <li>
   
    <a href="#">
   
Titre du menu 3   
    </a>
   
    <ul class=niveau3>
   
      <li><a href="#">  Sous titre 1 du menu 2 </a> </li>
      <li><a href="#">  Sous titre 2 du menu 2 </a> </li>
      <li><a href="#">  Sous titre 3 du menu 3 </a> </li>
      <li><a href="#">  Sous titre 4 du menu 4 </a> </li>   
     
    </ul>
     
    </li>
   
   
   
    </ul></li></ul>
   


<ul class=niveau1>
  <li>Menu 2
    <ul class=niveau2>
        <li class=plus>
        <a href="#">
            Titre du menu 2
        </a>
            <ul class=niveau3>
      <li><a href="#">  Sous titre 1 du menu 2 </a> </li>
      <li><a href="#">  Sous titre 2 du menu 2 </a> </li>
      <li><a href="#">  Sous titre 3 du menu 2 </a> </li>
      <li><a href="#">  Sous titre 4 du menu 2 </a> </li>
     
      </ul>
     
      </li>
    <li>
    <a href="#">
    Titre du menu 2
    </a>
   
    <ul class=niveau3>
   
      <li><a href="#">  Sous titre 1 du menu 2 </a> </li>
      <li><a href="#">  Sous titre 2 du menu 2 </a> </li>
      <li><a href="#">  Sous titre 3 du menu 3 </a> </li>
      <li><a href="#">  Sous titre 4 du menu 4 </a> </li>   
     
    </ul>
   
    </li>
    <li>
   
    <a href="#">
   
Titre du menu 3   
    </a>
   
    <ul class=niveau3>
   
      <li><a href="#">  Sous titre 1 du menu 2 </a> </li>
      <li><a href="#">  Sous titre 2 du menu 2 </a> </li>
      <li><a href="#">  Sous titre 3 du menu 3 </a> </li>
      <li><a href="#">  Sous titre 4 du menu 4 </a> </li>   
     
    </ul>
     
    </li>
   
   
   
    </ul></li></ul>

   
   
    </div>   


La partie css

#monmenu {
    font-weight: bold; font-size: 12px; font-family: trebuchet ms,arial,tahoma,verdana,sans-serif
}
#monmenu ul ul {
    border-right: #b0b0b0 1px solid; padding-right: 0px; border-top: #b0b0b0 1px solid; display: none; padding-left: 0px; left: 164px; padding-bottom: 0px; margin: 0px; border-left: #b0b0b0 1px solid; padding-top: 0px; border-bottom: #b0b0b0 1px solid; position: absolute; top: -1px
}
#monmenu li {
    padding-right: 2px; padding-left: 2px; padding-bottom: 2px; margin: 0px; width: 160px; padding-top: 2px; list-style-type: none; position: relative; background-color: #e0e0e0
}
#monmenu li:hover {
    background-color: #ffff70
}
#monmenu li.sfhover {
    background-color: #ffff70
}
#monmenu li a {
    text-decoration: none
}
#monmenu li:hover ul.niveau2 {
    display: block
}
#monmenu li li:hover ul.niveau3 {
    display: block
}
#monmenu li.sfhover ul.niveau2 {
    display: block
}
#monmenu li li.sfhover ul.niveau3 {
    display: block
}
#monmenu li.plus {
    background-position: right 50%; border-bottom: #b0b0b0 1px solid; background-repeat: no-repeat
}

jeudi 7 juin 2012

Le trio HTML5/CSS3/Javascript pour la réalisation d'un popup


0. Rions un peu

J'ai tenté plusieurs fois de réaliser une fenêtre popup juste pour lire les détails concernant un article et sans quitter la page la page en cours. N'ayant pas réussit à le faire je me suis proposé de faire autre chose.
Quelques jours après une mélancolie (longue histoire ...je vous expliquerai un jour ... ), je voulais faire autre chose pour me changer d'idée. Ainsi je suis parvenu à réaliser dans moins de 10 lignes de codes ce que je n'ai pas pu faire.

1. Procédure et utilité

a. Un pop-up (de l'anglais pop-up window qui serait traduit en fancais : une fenêtre surgissante ou fenêtre qui apparait brusquement ) est une fenêtre secondaire qui s'affiche, parfois sans avoir été sollicitée par l'utilisateur devant la fenêtre de navigation principale lorsqu'on navigue sur Internet. (Voir Wikipedia)

Elle est tres utilisée dans des cas de publicités ou la lecture des détails concernant  un article sur le web par exemple.

b. Comme dit ton un exemple bien fait vaux mieux que 10 tuto bien exepliqué : je réalise deux pages html : page_web.html et page_popup.html . En cliquant un liens dans page_web.html, une fenetre popup contenant page_popup.html s'ouvre avec les détails suivants :

largeur : 532px,
hauteur :320px
menubar=no --> C'est à dire que le popup n'a pas de barre de menu,
scrollbars=no --> C'est à dire  qu'il n y a pas de barre de deffillement 

Notons que le script java contient les définitions concernant la position de la page dans l'écran 

page_web.html 


<html>
 <head>
 <script language="javascript">
    function PopupCentrer(page,largeur,hauteur,options)
    {
        var top=(screen.height-hauteur)/2;
        var left=(screen.width-largeur)/2;
        window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
    }
</script>

<meta http-equiv="Content-Language" content="en-us">
        <title>Page web simple avec popup</title>
</head>

<body>

<a href="javascript:PopupCentrer('popup.html',532,320,'menubar=no,scrollbars=no,statusbar=no')"> Cliquer ici pour acceder à la page popup</a>
                                                   
</body>
</html>


page_popup.html

<html>
 <head>
<meta http-equiv="Content-Language" content="en-us">
        <title> Popup page</title>
</head>

<body>
<div style="background-color:#CCCCCC; height:200px;">

 Je suis un popup                                               
</div>

 </body>
</html>




Vous pouvez télécharger les codes sources ici
Voila c'est tout. Si l'aticle vous semble interressant ou si vous avez des commentaires n'oublier pas à nous le faire savoir : monsar04(at)gmail.com / 00243997647154







samedi 2 juin 2012

Comment faire un navigateur web en C#




Bouton de confirmation en Javascript

1. Contexte
Parfois il nous arrive de demande à l'utilisateur final à confirmer l'action avant son exécution. Cela arrive souvent lorsque par exemple on veux que l'utilisateur final confirme la suppression d'un enregistrement dans une base des données. Il existe plusieurs solutions pour y arriver mais dans les lignes qui suivent , nous avons pu experimenté cela avec quelques lignes de code en utilisant une petite fontion javascript.

Dans l’exemple suivant , le bouton crée demande à l'utilisateur final de confirmer l'execution de l'action, cette action n'est autre que la redirection vers un site web quelconque , on peux mettre autre chose à la place de la redirection , comme executer un script sql dans la bdd, suppression au création d'un autre fichier , connexion reseau , ....

2. Un tuto vaux mieux que un long discours ....
   
 <html>                                                                                                                                                             <head>                                                                                                                                                         <script language=javascript>                                                                                                                        
   function ConfirmMessage() {                                                                                                                      
       if (confirm("Etes vous certain de vouloir executer l'action  ?"))                                                                 
       { //Placer ici l'action a executer par java script (ici je demande à javascrit de faire une redirection)         
           window.location = "http://monsar.blogspot.com.ar/"                                                                           
       }                                                                                                                                                           
   }                                                                                                                                                               
</script>                                                                                                                                                      
        <meta http-equiv="Content-Language" content="en-us">                                                                         
        <title>Confirmation JavaScript</title>                                                                                                    
</head>                                                                                                                                                        
<body>                                                                                                                                                          
<input type="button" value="Executer action" onClick="ConfirmMessage()">                                                      
</body>                                                                                                                                                         
</html>                                                                                                                                                                                                                                                                                                                              
                                                                                                                                                                    
Et voila , si l'article vous a plus ou si vous avez un commentaire , n'oubliez pas de nous le faire savoir :
monsar04atgmail.com / 00243997647154


vendredi 1 juin 2012

Lire les données d'une feuille Excel avec asp.net

Il est possible de lire les données d'une feuille Excel avec asp.net et meme plus d'effectuer une recherche à l'intérieur d'une feuille excel de la meme facon qu'on le ferait dans une base des données. La différence entre la lecture dans une feuille excele et dans une  base des données est que la base des données offre beacup de souplesse , de rapidité , beaucoup de fonctions de manipulations, de calculs dans un temps très reduit avant même l'affichage devant l'écran de l'utilisateur final. 

Voici comment je me suis battu pour parvenir a lire les données d'une feuille excel

0. Name space à ajouter :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Xml;
using System.Text;
using System.Data.OleDb;
using System.Configuration;
using System.Data;






1. Partie HTML 


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

<style type="text/css">
tr.sectiontableentry1 td,
tr.sectiontableentry2 td {
  padding: 4px;
  font-family:Trebuchet MS;
    font-size:10px;
}
tr.sectiontableentry1 td {
    padding: 8px 5px;
    background: url(hline.gif) repeat-x bottom;
    font-family:Trebuchet MS;
    font-size:10px;
}
tr.sectiontableentry2 td {
    padding: 8px 5px;
    background: url(hline.gif) repeat-x bottom #F2F2F2;
    font-family:Trebuchet MS;
    font-size:10px;
}
</style>

    <title></title>

</head>
<body>
    <form id="form1" runat="server">

    <div>
  
          <table style="padding: 5px; font-size: 11px;">
        
                <tbody>
              
                <tr>
              
                    <td>
                  
                        <strong>Veuillez selectionner un fichier excel.</strong>
                    </td>
                </tr>
                    <tr>
                        <td>
                        <div style="background: url(hline.gif) repeat-x bottom #F2F2F2;padding: 8px 5px;border-bottom: 1px solid #ccc;">
                            <asp:FileUpload ID="txtFilePath" runat="server"></asp:FileUpload>&nbsp;&nbsp;<asp:Button
                                ID="btnUpload" runat="server" Text="Upload" onclick="btnUpload_Click" />
                            <br />
                            <asp:Label ID="lblMessage" runat="server" Visible="False" Font-Bold="True"
                                ForeColor="#009933"></asp:Label>
                        </div>
                        </td>
                    </tr>
                    <tr>
                        <td>
                        <asp:GridView ID="grvExcelData" runat="server">
                        <RowStyle CssClass="sectiontableentry2" />
                        <AlternatingRowStyle CssClass="sectiontableentry1" />
                        </asp:GridView>                          
                        </td>
                    </tr>
                </tbody>
            </table>
  


    </div>

    </form>
</body>
</html>

 
2. Partie Code

protected void btnUpload_Click(object sender, EventArgs e)
        {


            try
            {
                if ((txtFilePath.HasFile))
                {

                    OleDbConnection conn = new OleDbConnection();
                    OleDbCommand cmd = new OleDbCommand();
                    OleDbDataAdapter da = new OleDbDataAdapter();
                    DataSet ds = new DataSet();
                    string query = null;
                    string connString = "";
                    string strFileName = DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss");
                    string strFileType = System.IO.Path.GetExtension(txtFilePath.FileName).ToString().ToLower();

                    //Verifions le type de fichier ( excel 1997-2003 ou Excel 2010 ?)
                    if (strFileType == ".xls" || strFileType == ".xlsx")
                    {
                        txtFilePath.SaveAs(Server.MapPath("~/UploadedExcel/" + strFileName + strFileType));
                    }
                    else
                    {
                        lblMessage.Text = "Seulement les fichiers excels sont permis";
                        lblMessage.ForeColor = System.Drawing.Color.Red;
                        lblMessage.Visible = true;
                        return;
                    }

                    string strNewPath = Server.MapPath("~/UploadedExcel/" + strFileName + strFileType);

                    //Etablissons la Connection String Excel
                    if (strFileType.Trim() == ".xls")
                    {
                        connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
                    }
                    else if (strFileType.Trim() == ".xlsx")
                    {
                        connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
                    }


                    query = "SELECT * FROM [Sheet1$]";

                    //Creons l'objet de connexion
                    conn = new OleDbConnection(connString);
                    //Open connection
                    if (conn.State == ConnectionState.Closed) conn.Open();
                    //Creons l'objet command
                    cmd = new OleDbCommand(query, conn);
                    da = new OleDbDataAdapter(cmd);
                    ds = new DataSet();
                    da.Fill(ds);

                    grvExcelData.DataSource = ds.Tables[0];
                    grvExcelData.DataBind();

                    lblMessage.Text = "Fichier chargé avec succès ! Total d'enregistrement:" + ds.Tables[0].Rows.Count;
                    lblMessage.ForeColor = System.Drawing.Color.Green;
                    lblMessage.Visible = true;

                    da.Dispose();
                    conn.Close();
                    conn.Dispose();
                }
                else
                {
                    lblMessage.Text = "Vous devez d'abord selectionner un fichier Excel";
                    lblMessage.ForeColor = System.Drawing.Color.Red;
                    lblMessage.Visible = true;
                }

            }

            catch (Exception Except)
            {

                throw;
            }

        }







Si l'article vous semble utile ou si vous avez des commentaires à faire ou si vous avez des difficultés n'hésitez pas à me contatcter : monsar04atgmail.com / 00243997647154


dimanche 20 mai 2012

Limiter le nombre des caracteres dans un text box en utilisant javascript et pure html

Je ne suis pas un chevronné en Javascript , j'essaie de fabriquer du code. En bidouillant et en utilisant google comme ami , je suis arrivé à une conclusion qui a sauvé ma journée.

Javascript code :

<script language = "Javascript">
maxL=255;
var bName = navigator.appName;
function taLimit(taObj) {
    if (taObj.value.length==maxL) return false;
    return true;
}
function taCount(taObj,Cnt) {
    objCnt=createObject(Cnt);
    objVal=taObj.value;
    if (objVal.length>maxL) objVal=objVal.substring(0,maxL);
    if (objCnt) {
        if(bName == "Netscape"){    
            objCnt.textContent=maxL-objVal.length;}
        else{objCnt.innerText=maxL-objVal.length;}
    }
    return true;
}
function createObject(objId) {
    if (document.getElementById) return document.getElementById(objId);
    else if (document.layers) return eval("document." + objId);
    else if (document.all) return eval("document.all." + objId);
    else return eval("document." + objId);
}
</script>


HTML Code

<font>
<textarea onKeyPress="return taLimit(this)" onKeyUp="return taCount(this,'myCounter')" name="Description" rows=7 wrap="physical" cols=40>
</textarea>
<br><br>
Il vous reste <B><SPAN id=myCounter>255</SPAN></B> caractere pour les commentaires..</font>

lundi 14 mai 2012

Menu horizontal déroulant en CSS

Vu que ce menu ne fonctionne qu'avec des navigateurs récents, il convient bien entendu de mettre un vrai lien sur l'item survolé, afin que le navigation ne perde rien en cas de non fonctionnement du déroulement du menu. C'est une règle à appliquer aussi si on met une surcouche javascript. Simple histoire de bon sens...


http://css.mammouthland.net/menu-horizontal-deroulant-en-css.php

CSS 3 : Réaliser un fond en dégradé sans image

jeudi 10 mai 2012

Limiter le nombre des caracteres ( couper les caracteres ) d'un texte dans un div avec du css

CODE

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
.cadre
{
overflow:hidden;
white-space:nowrap;
text-overflow: ellipsis;
width:500px;
padding:3px;
height:30px;
border:1px solid #000000;
background-color:#C1C1C1;
}

</style>
</head>
<body>
<div class="cadre">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Nam cursus. Morbi ut mi. Nullam enim leo, egestas id, condimentum at,
laoreet mattis, massa. Sed eleifend nonummy diam. Praesent mauris ante,
elementum et, bibendum at, posuere sit amet, nibh. Duis tincidunt lectus
quis dui viverra vestibulum. Suspendisse vulputate aliquam dui. Nulla elementum 
</div>
</body>
</html>

RESULTAT








lundi 30 avril 2012

Convertir un text en entier ou entier en text lors d'un select

La formule est simple :
 

SELECT CAST(VotreColoneVarchar AS INT) FROM Table
SELECT CONVERT(INT, VotreColoneVarchar) FROM Table

Exemple 

SELECT CAST(financement AS INT) as Financement_Bailleur FROM Finance

En realite , dans ma table Finance , la colonne financement a été crée par erreur en tant que varchar

mercredi 25 avril 2012

Lire les données d'un fichier Excel (. Xls) dans ASP.NET

Dans cet article, nous allons voir comment afficher des données à partir d'un fichier Excel en utilisant ASP.NET. Nous allons nous connecter au fichier Excel à l'aide du moteur de données OLEDB.NET, extraire les données, puis afficher les données dans un GridView. A 

1.ajouter dans le fichier web.config


<connectionStrings>
            <add name="xls" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Sample1.xls;Extended Properties=Excel 8.0"/>
            <add name="xlsx" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Sample.xlsx;Extended Properties=Excel 12.0"/>
      </connectionStrings> 

2. CodeSources
protected void Page_Load(object sender, EventArgs e)
    {
        string connString = ConfigurationManager.ConnectionStrings["xls"].ConnectionString;
       
        OleDbConnection oledbConn = new OleDbConnection(connString);
        try
        {
            // ouverture connection
            oledbConn.Open();
            // Creation OleDbCommand
            OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn);
            // Create new OleDbDataAdapter
            OleDbDataAdapter oleda = new OleDbDataAdapter();
            oleda.SelectCommand = cmd;
          
            DataSet ds = new DataSet();
           
            oleda.Fill(ds, "Employees");
            GridView1.DataSource = ds.Tables[0].DefaultView;
            GridView1.DataBind();
        }
        catch
        {
        }
        finally
        {
            // fermeture connection
            oledbConn.Close();
        }     
    }

Asp.net c# tutorial : storing data in sql server

Asp.net c# tutorial : storing data in sql server

jeudi 12 avril 2012

Feuilles de style en fonction du navigateur

Css html
Les habitués de création de sites Internet le savent, il existe beaucoup de différences d’acceptation de codage entre les 2 navigateurs les plus utilisés : Internet Explorer et Mozilla Firefox.

Il faut donc parfois modifier son CSS afin qu’il s’adapte parfaitement aux 2 navigateurs (notamment si vous utilisez des div et position : absolue).
 
Deux methodes existent :
 
1. Javascript :
Voici le code :
 
 <script type="text/javascript">
var nomnav = navigator.appName;
if (nomnav == 'Microsoft Internet Explorer') {
  document.write("<link rel='stylesheet' media='screen' type='text/css' href='style_ie.css'>");
}
else {
  document.write("<link rel='stylesheet' media='screen' type='text/css' href='style.css'>");
}
</script>

2. Feuilles de style dans le head

<head>
   ...
   <link rel="stylesheet" href="css/ff.css" type="text/css" />
   <!--[if IE 6]>
      <link rel="stylesheet" href="css/ie6.css" type="text/css" />
   <![endif]-->
   <!--[if IE 7]>
      <link rel="stylesheet" href="css/ie7.css" type="text/css" />
   <![endif]-->
</head>
 
 

vendredi 16 mars 2012

Excel to sqlserver


Une tuto bien explique vaux mieux qu'un livre dit on. Pas de commentaire, trouver le fichier zip ici  pour exporter les donnees d'un fichier excel vers sql server.Au cas ou ca ne marche pas ; la solution est simple; ecrivez moi a mon  adresse : monsar04[at]gmail.com

vendredi 23 décembre 2011

Authentification par formulaire ASP.NEt

1. Contexte

Plusieurs jours de galère, cherchant voies et moyens pour sécuriser une application web créée au sein de l'entreprise ont abouti à une solution exploitable. Je me suis proposé de partager cette expérience à travers ces écrits afin que autres personnes ne puissent pas perdre le temps comme moi.    
 
En effet, le mode d'authentification par formulaire consiste à rediriger tout utilisateur vers une page de login tant que celui-ci ne s'est pas authentifié. L'authentification peut-être réalisée soit à partir d'un fichier de configuration XML soit à partir d'un système externe (SGBD ou Active Directory). Dans notre cas , nous avons utilisé  un mode mixte : authentification à travers Active Directory et contrôle du rôle de l’utilisateur dans la base des données.
 

L'authentification par formulaire vous offre un moyen d'authentifier des utilisateurs à l'aide de votre propre code puis de conserver un jeton d'authentification dans un cookie ou dans l'URL de la page. L'authentification par formulaire participe au cycle de vie de la page ASP.NET via le module FormsAuthenticationModule.

Pour utiliser l'authentification par formulaire, vous créez une page de connexion qui collecte les informations d'identification de l'utilisateur et inclut le code servant à authentifier ces informations. Si les informations d'identification sont correctes, vous pouvez appeler des méthodes de la classe FormsAuthentication pour rediriger la demande vers la ressource demandée initialement à l'aide d'un ticket d'authentification approprié (cookie). 

Fichiers sources
Les fichiers sources sont : Login.aspx, Login.aspx.cs, Site.Master.aspx, Site.Master.aspx.cs, Global.asax, web.config

1. Login.aspx


 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="MGP2.Login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
    <link href="Styles/Style_Authentification.css" rel="stylesheet" type="text/css" /> 
<script src="Scripts/popup.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
 
    <div runat="server" id="Div_Info" class="info_application" visible="false">
          
    </div>
      <div class="error_message">
         <asp:Label ID="Error_Message_Auth" runat="server" Text=""></asp:Label>
     </div>
    <div class="cadre_principal">
   
        <div class="ligne_authentification">
            <div class="ligne_authentification_gauche"> Identifiant </div>
            <div class="ligne_authentification_droite">  <asp:TextBox ID="UserName" runat="server" CssClass="text_box_auth"></asp:TextBox> </div>
        </div>
        
        
         <div class="ligne_authentification">
            <div class="ligne_authentification_gauche"> Mot de passe </div>
            <div class="ligne_authentification_droite"> <asp:TextBox ID="Password" TextMode="Password" runat="server" CssClass="text_box_auth" ></asp:TextBox> </div>
        </div>
         <div>
         <div style="height:12px; width:240px; float:left"> </div>
          <div style="min-height:12px; width:190px; float:left">
            
            <asp:Button ID="Connect" OnClick="Connexion_System" runat="server" Text="Connexion" CssClass="bouton_connexion" />
 
           </div>
         </div>
      
        <div class="ligne_authentification" style="min-height:15px;">
            <div class="ligne_authentification_gauche"> </div>
            <div class="ligne_authentification_droite" style=" padding-top:8px;">
            <a href="javascript:PopupCentrer('Forgotten_Passwd.aspx',535,180,'menubar=no,scrollbars=no,statusbar=no')" class="forgotten_passwd">
            Mot de passe oublié ? </a>
            </div>
        </div>
         <div class="ligne_authentification_finale">
            <div class="ligne_authentification_gauche_finale"> </div>
            <div class="ligne_authentification_droite_finale" style=" padding-top:13px; ">
            
            <a href="javascript:PopupCentrer('Info.aspx',640,300,'menubar=no,scrollbars=no,statusbar=no')" title="Cliquer ici pour avoir plus d'information sur l'application" class="info">
            Plus d'info sur l'application
            </a>
           
          
            
            </div>
        </div>
    </div> 
    </form>
</body>
</html>




2. Login.aspx.cs

using System;
using System.DirectoryServices;
using System.Collections.Generic;
using System.Linq;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;

namespace MGP2
{
    public partial class Login : System.Web.UI.Page
    {
        SqlCommand myCommand;
        SqlDataReader myReader;
        SqlConnection myConnection;

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Connexion_System(object sender, EventArgs e)
        {
            string Login = UserName.Text;
            string MotDePasse = Password.Text;

            try
            {

                //Verifions si l utilisateur existe dans le domaine

                DirectoryEntry Ldap = new DirectoryEntry("LDAP://OU=xxxx,DC=xx,DC=xxxx,DC=xxxxxx", Login,   
                MotDePasse);
                DirectorySearcher searcher = new DirectorySearcher(Ldap);
                searcher.Filter = "(&(objectClass=user)(sAMAccountName=" + UserName.Text + "))";
                SearchResult result = searcher.FindOne();
                DirectoryEntry DirEntry = result.GetDirectoryEntry();

                //Recuperons les informations relatives a l'utilisateur

                string Prenom = DirEntry.Properties["givenName"].Value.ToString();
                string Nom = DirEntry.Properties["sn"].Value.ToString();
                string Email = DirEntry.Properties["mail"].Value.ToString();

             
                //Verifions role et autres attributions de l'utilisateur dans la base des donnees

                myConnection = (SqlConnection)Session["Connecting"];
                string RqtSelect = string.Format("select * from USERS where EMAIL_USER='{0}'", Email);
                myCommand = new SqlCommand(RqtSelect, myConnection);
                myReader = myCommand.ExecuteReader();

                if (myReader.HasRows)
                {
                    while (myReader.Read())
                    {
                        string Loginame1 = myReader.GetString(1);
                        string Loginame2 = myReader.GetString(2);
                        string Loginmail = myReader.GetString(3);
                        string Phone = myReader.GetString(4);
                        Int32 RoleId = myReader.GetInt32(6);

                       //Mettons en sessions les infos utiles de l'utilisateur

                       Session["Login"] = UserName.Text;
                       Session["NomUtilisateur"] = string.Format("{0}", Nom);
                       Session["PrenomUtilisateur"] = string.Format("{0}", Prenom);
                       Session["EmailUtilisateur"] = Email;
                       Session["RoleUtilisateur"] = RoleId;

                       string Adresse_Electronique = Convert.ToString(Session["EmailUtilisateur"]);
                       FormsAuthentication.RedirectFromLoginPage(Adresse_Electronique, true);
                    }
                }

                myReader.Close();


            }
            catch (Exception ex)
            {
                Error_Message_Auth.Text = ex.Message;
            }
        }
    }
}



 3. Site.Master.aspx:

 <asp:Button ID="Quitter" OnClick="Quitter_Page" runat="server" Text="Logout" Width="113px" />
<br>
              
 <asp:Label ID="WellComeText" runat="server" Text=""></asp:Label>   
              
 4. Site.Master.aspx.cs


using System;
using System.DirectoryServices;
using System.Collections.Generic;
using System.Linq;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
namespace MGP2
{
    public partial class SiteMaster : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
            Load_Principal_Data();
            }
        }
        void Load_Principal_Data()
        {
            if (Session["EmailUtilisateur"]!= null)
            {
                WellComeText.Text = "Bienvenue" + Convert.ToString(Session["NomUtilisateur"]) + Convert.ToString(Session["PrenomUtilisateur"]);
            
            }
        
        }
        protected void Quitter_Page(object sender, EventArgs e)
        {
            
            //Session["Login"] = null;
            Session.Abandon();
            FormsAuthentication.SignOut();
            FormsAuthentication.RedirectToLoginPage();
        }
    }
}


5. Global.asax
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
using System.Text.RegularExpressions;

namespace MGP2
{
    public class Global : System.Web.HttpApplication
    {


        void Application_Start(object sender, EventArgs e)
        {
            // Code qui s'exécute au démarrage de l'application

        }

        void Application_End(object sender, EventArgs e)
        {
            //  Code qui s'exécute à l'arrêt de l'application

        }

        void Application_Error(object sender, EventArgs e)
        {
            // Code qui s'exécute lorsqu'une erreur non gérée se produit

        }

       
        void Session_Start(object sender, EventArgs e)
        {
            // Code qui s'exécute lorsqu'une nouvelle session démarre
            SqlConnection myConnection = new SqlConnection();
            //myConnection.ConnectionString = "Data Source=CDLPPOVERTY10;Initial Catalog=MR;Integrated Security=True";
            myConnection.ConnectionString = "Data Source=xxxxx;Initial Catalog=DataBaseName;User ID=xxxx;Password=xxxxxx";

            myConnection.Open();
            Session["Connecting"] = myConnection;
        }

        void Session_End(object sender, EventArgs e)
        {
            // Code qui s'exécute lorsqu'une session se termine.
            // Remarque : l'événement Session_End est déclenché uniquement lorsque le mode sessionstate
            // a la valeur InProc dans le fichier Web.config. Si le mode de session a la valeur StateServer
            // ou SQLServer, l'événement n'est pas déclenché.
            SqlConnection FermerConnexion = (SqlConnection)Session["Connecting"];
            FermerConnexion.Close();
        }

       

    }
}
 
6. web.config


<add name="MRConnectionString" connectionString="Data Source=xxxxx;Initial Catalog=xxx;User ID=xxxxxx;Password=xxxxx" providerName="System.Data.SqlClient" />

Dans le web.config je place seulement la ligne utilie

Ca marche !!!!

Si vous avez des difficultes a exploite ce code :
1. GIF (Google Is your Friend)
2. monsar04[at]gmail.com / 00243997647154