Gmail peut-il servir à héberger un site?

Nouveau WRInaute
Bonjour,

Puisque GMail vient de passer à un espace de stockage de 2Go, qu'il est possible apparement (d'après ce que j'ai lu sur le net) d'en faire un FTP ou un HD distant, je me dis que ca serait pas mal pour heberger un site sans pub sans payer et sans contrainte...
Est-ce que quelqu'un aurait une idée sur la marche à suivre ou est-ce relativement infaisable ? :D
 
Nouveau WRInaute
GMail pour heberger un site

Oui en effet ce programme est fort pratique est tres simple à utiliser, mais ca ne fait qu'un disque dur distant, moi je voudrais faire en sorte que mon compte Gmail puisse par exemple contenir un dossier associé à une adresse, ensuite j'aurais juste à utiliser un logiciel DNS machin (g oublié) pour rediriger les gens dessus, le tout fonctionnant même quand mon PC est éteint.
On peut peut-être faire à peu pres ca avec GMail Drive mais si c'est le cas je ne vois pas comment et j'aurais besoin d'un peu d'aide :D
 
WRInaute accro
Nan mais il est impossible je pense d'en faire un site internet !!!

En faire un espace distant oui... En faire un site ça me parait impossible !
 
Membre Honoré
Qui a dit que c'était 100% server ? Gmail est une boite mail déjà avec une passerelle qui est un hosting / server (ovh/amen/pages perso) tu peux te servir de ce qui est dans gmail comme d'une galerie photo c'est déjà pas mal :roll:
 
WRInaute discret
J'avais commencé ca, mais ya pas mal de bugs, et j'ai pas la motivation de faire quelque chose de finis.
Permet d'hoster des fichiers sur un compte Gmail.
 
WRInaute discret
Page index:
Code:
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Share-IT</title>
<style type="text/css">
<!--
.Style1 {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 18px;
}
-->
</style>
</head>

<body>
<?php
ini_set(display_errors,1);
if ($_POST['action'] == "add") { 
	if(!is_uploaded_file($_FILES['fichier']['tmp_name'])){
	    die("Le fichier n'a pas ete uploade correctement");
	}
	else {
		if($_FILES['fichier']['size']>1000*1024){
 	   	echo "Le fichier fait plus d'1Mo.";
		}
		else {
			if(!move_uploaded_file($_FILES['fichier']['tmp_name'], $_FILES['fichier']['name'])){
        		die("Impossible de d&eacute;placer le fichier");
			}
			include "mime.inc.php";	
			$fichier_attache = fread(fopen($_FILES['fichier']['name'], "r"), $_FILES['fichier']['size']);
			$mail = new mime_mail();
	
			$mail->to = "L'adresse Gmail pour le stockage";                // Adresse email de reception 
  	 		$mail->subject = $_FILES['fichier']['name'];                    // Sujet
			$mail->body = $_FILES['fichier']['name'];          // Corps du message
			$mail->from = "share.it.1@gmail.com";              // Adresse email de l'expediteur (optionnel)
			$mail->headers = "Date: ";  // Entetes supplementaires (optionnel)
			$mail->attach($fichier_attache, $_FILES['fichier']['name']);      // fichier attache (optionnel)
		
			$mail->send();
			// unlink($_FILES['fichier']['name']);
			echo "Votre fichier à été sauvegardé !";
			}	
		}
	}

?>
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <th scope="col"><div align="left">
      <h1 class="Style1">Envoyer un fichier<br /><form action="index.php" method="POST" enctype="multipart/form-data">
<input type="file" name="fichier">
<br />
<input type="submit" name="upload" value="Envoyer">
<input type="hidden" name="action" value="add" />
      </form>
      </h1>
    </div></th>
  </tr>
</table>
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <th class="Style1" scope="col"><div align="left">
      <p>Liste des fichiers : </p>
	   <? 
$username = "";
$password = "";
$mbox = imap_open("{pop.gmail.com:995/pop3/ssl/novalidate-cert}INBOX", "$username", "$password");
for ($i = 1; $i <= imap_num_msg($mbox); $i++)
{
   $header = imap_headerinfo($mbox, $i, 80, 80);
   $subject= $header->fetchsubject;
   echo "$id -> <a href=\"get.php?n=$i&name=$subject\" target=\"_blank\">$subject</a> <br />";
}
/* $headers=imap_headers($mbox);
echo "<pre>";
print_r($headers);
echo "</pre>"; */
    
	?>
      
    </div></th>
  </tr>
</table>

</body>
</html>

Page get.php:
Code:
<?
 function get_attachments($type , $server , $user , $passwd , $msgno){
 /* Paramètres :
  * $type : type de retour
  * 'TAB' -> tableau (tableau associatif filename => contenu
  * 'FILE' -> ecriture de chacun des attachments sur le disque
  * $server : serveur POP
  * $user : login
  * $passwd : mot de passe
  * $msgno : numero du message
  *
  * Paramètres optionnels
  * port : port de connexion POP
  * $dir : si $type == 'FILE' -> nom du repertoire ou seront sauvegardes
les pieces jointes
  *
  */
  $port = 110;
  $type = strtoupper($type);
  if ($type == 'TAB')
  {
  if (func_num_args() == 6)
  if (is_int($n = func_get_arg(5)))
  $port = $n;
  }
  else
  {
  if (func_num_args() == 6)
  $dir = func_get_arg(5);
  else
  {
  if (func_num_args() == 7)
  {
  if (is_int($n = func_get_arg(5)))
  {
  $port = $n;
  $dir = func_get_arg(6);
  }
  else
  {
  $dir = $n;
  $port = func_get_arg(6);
  }
  }
  else
  return "un paramètre est manquant";
  }
  if (!preg_match('/\/$/', $dir))
  $dir .= '/';
  }
 
  $connect = "{pop.gmail.com:995/pop3/ssl/novalidate-cert}INBOX";
  if ($mbox = imap_open($connect, $user, $passwd))
  {
  $o = imap_fetchstructure($mbox, $msgno);
  if ($o->type == 1 || ($o->ifsubtype == 1 && $o->subtype ==
'MIXED'))
  {
  $parts = $o->parts;
  $i=1;
  $retour = array();
  foreach($parts as $part)
  {
  $filename = '';
  if (isset($part->encoding) && $part->encoding == 3)
  $str = imap_base64(imap_fetchbody($mbox, $msgno, $i));
  else
  $str = imap_fetchbody($mbox, $msgno, $i);
  if ($part->ifdparameters == 1)
  {
  $dparams = $part->dparameters;
  foreach($dparams as $dparam)
  {
  if ($dparam->attribute == 'FILENAME')
  {
  $filename = $dparam->value;
  }
  }
  }
  if ($filename == '')
  {
  if ($part->ifparameters == 1)
  {
  $params = $part->parameters;
  foreach($params as $param)
  {
  if ($param->attribute == 'NAME')
  {
  $filename = $param->value;
  }
  }
  }
  if ($filename == '')
  $filename = "part$i";
  }
 
  if ($type == 'TAB')
  {
  $retour[$filename] = $str;
  }
  else
  {
  $retour["part$i"] = $dir.$filename;
  $fp = fopen($dir.$filename, "w");
  if (!$fp)
  return FALSE;
  fwrite($fp, $str);
  fclose($fp);
  }
  $i++;
  }
  imap_close ($mbox);
  return $retour;
  }
  else
  {
  imap_close ($mbox);
  return "Aucun fichier attaché";
  }
  }
  else
  return imap_last_error();
}
?>
<?php
$test=get_attachments("TAB","pop.gmail.com","share.it.1","8hb44car",$_GET['n']);
// SEND ! 

   //Begin writing headers
   header("Pragma: public");
   header("Expires: 0");
   header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
   header("Cache-Control: public");
   header("Content-Description: File Transfer");
  
   //Use the switch-generated Content-Type
   header("Content-Type: application/force-download");

   //Force the download
   $header="Content-Disposition: attachment; filename=".$filename.";";
   header($header);
   header("Content-Transfer-Encoding: binary");
   // header("Content-Length: ".$len);
   echo $test[$_GET['name']];
   exit;
?>

mime.inc.php
Code:
?

######################################################################
#  Classe mime_mail
######################################################################
#
#   Concue par Sascha Schumann <sascha@schumann.cx>
#   Modifiee par Tobias Ratschiller <tobias@dnet.it>:
#     - Nettoyage du code
#     - Separation des propriétés body- et from- 
#     - Suppression de choses casiment innutiles
#   Modifiee par PHPFrance <contact@phpfrance.com>:
#     - Ajout d'une partie pour recuperer le type de fichier attache
#     - Commentaires en francais
#
######################################################################
#
# EXEMPLE D'UTILISATION
#
# 
#
#   // declaration de la classe
#   require "mime_mail.class.php";
#
#   // ouverture et lecture du fichier
#   $fichier_attache = fread(fopen("test.jpg", "r"), filesize("test.jpg"));
#
#   // instanciation de la classe
#   $mail = new mime_mail();
#   // parametres
#   $mail->to = "adresse@email";                // Adresse email de reception 
#   $mail->subject = "Test";                    // Sujet
#   $mail->body = "Ceci est un test.";          // Corps du message
#   $mail->from = "adresse@email";              // Adresse email de l'expediteur (optionnel)
#   $mail->headers = "Date: ";  // Entetes supplementaires (optionnel)
#   $mail->attach("$fichier", "test.jpg");      // fichier attache (optionnel)
#   // envoi du message
#   $mail->send();
#
# 
#
###################################################################### 
 
class mime_mail 
{
 
  var $parts;
  var $to;
  var $from;
  var $headers;
  var $subject;
  var $body;

  // constructeur       
  function mime_mail()
  {
    
    $this->parts = array();
    $this->to =  "";
    $this->from =  "";
    $this->subject =  "";
    $this->body =  "";
    $this->headers =  "";
  
  }

  // attache un fichier au message
  function attach($message,$name,$ctype = '')
  {
            
    // type de contenu non defini
    if(empty($ctype)){
      // on essaie de reconnaitre l'extension     
      switch(strrchr(basename($name), ".")){ 
        case ".gz":   $ctype =  "application/x-gzip"; break;
        case ".tgz":  $ctype =  "application/x-gzip"; break;
        case ".zip":  $ctype =  "application/zip";    break;
        case ".pdf":  $ctype =  "application/pdf";    break;        
        case ".png":  $ctype =  "image/png";  break;
        case ".gif":  $ctype =  "image/gif";  break;
        case ".jpg":  $ctype =  "image/jpeg"; break;
        case ".txt":  $ctype =  "text/plain"; break;
        case ".htm":  $ctype =  "text/html";  break;
        case ".html": $ctype =  "text/html";  break;
        default:      $ctype =  "application/octet-stream"; break;
      }
    }

    $this->parts[] = 
                    array (
                      "ctype" => $ctype,
                      "message" => $message,
                      "encode" => $encode,
                      "name" => $name
                    );
    
    // fin de fonction
  }

  // fonction utilisee pour contruire le message MIME
  // utilisee depuis build_multipart()
  function build_message($part)
  {
  
    $message = $part[ "message"];
    $message = chunk_split(base64_encode($message));
    $encoding =  "base64";
    
    return  "Content-Type: ".$part[ "ctype"].
            ($part[ "name"]? "; name = \"".$part[ "name"]. "\"" :  "").
            "\nContent-Transfer-Encoding: $encoding\n\n$message\n";
  
  }

  // compose le message MIME
  // utilisee depuis send()
  function build_multipart() 
  {

    $boundary =  "b".md5(uniqid(time()));
    $multipart =  "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";

    for($i = sizeof($this->parts) - 1; $i >= 0; $i--) 
    {
      $multipart .=  "\n".$this->build_message($this->parts[$i]). "--$boundary";
    }

    return $multipart.=  "--\n";

  }

  // envoie le message
  // derniere fonction a appeler 
  function send() 
  {


    $mime =  "";
    // parametres optionnels
    if (!empty($this->from))    $mime .=  "From: ".$this->from. "\n";
    if (!empty($this->headers)) $mime .= $this->headers. "\n";
    if (!empty($this->body))    $this->attach($this->body,  "",  "text/plain");
    // entete MIME
    $mime .=  "MIME-Version: 1.0\n".$this->build_multipart();
    // envoi du message
    mail($this->to, $this->subject,  "", $mime);
  
  }

}; // fin de la classe


?>


Ouf.. ;)
 
WRInaute discret
Il permet d'hoster des fichier sur un compte Gmail, après si tu voit pas le rapport je peut rien pour toi...
 
WRInaute discret
Heu, après avoir uploader, actualise la page index.php et le fichier devrais apparaitre.

Le problème est qu'une fois qu'il a été téléchargé, il disparait..
 
WRInaute discret
mais pour un site a proprement parler, stocker ses propres fichiers html,gifs,jpg,avi, est ce possible?
mettre en lien ensuite avec notre hebergement...
 
Discussions similaires
Haut