Erreur PHP Parse error

Eléphant du PHP | 67 Messages

09 août 2013, 20:25

Bonjour,

Pouvez-vous me dire si il y a une erreur dans mon code :
    <?php
$host = 'localhost'; //Votre host, souvent localhost
$user = 'sauvegarde'; //votre login
$pass = 'mon_pass'; //Votre mot de passe
$db = 'sauvegarde'; // Le nom de la base de donnee
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error());
mysql_select_db($db) or die ('Erreur :'.mysql_error());
mysql_set_charset("utf8", $link);

$sauvegardeok = 'Sauvegarde Ok';
$sauvegardenok = 'Erreur Sauvegarde';

    function get_mime_type(&$structure)
    {
    $primary_mime_type = array("TEXT", "MULTIPART","MESSAGE", "APPLICATION", "AUDIO","IMAGE", "VIDEO", "OTHER");
    if($structure->subtype) {
    return $primary_mime_type[(int) $structure->type] . '/' .$structure->subtype;
    }
    return "TEXT/PLAIN";
    }
    function get_part($stream, $msg_number, $mime_type, $structure = false,$part_number = false)
    {
    // CETTE FONCTION PERMET DE RECUPERER UNIQUEMENT LE TEXTE DU MAIL (PAS LES PIECES JOINTES)
    if(!$structure) {
    $structure = imap_fetchstructure($stream, $msg_number);
    }
    if($structure) {
    if($mime_type == get_mime_type($structure)) {
    if(!$part_number) {
    $part_number = "1";
    }
    $text = imap_fetchbody($stream, $msg_number, $part_number);
    if($structure->encoding == 3) {
    return imap_base64($text);
    } else if($structure->encoding == 4) {
    return imap_qprint($text);
    } else {
    return $text;
    }
    }
    if($structure->type == 1) /* multipart */ {
    while(list($index, $sub_structure) = each($structure->parts)) {
    if($part_number) {
    $prefix = $part_number . '.';
    }
    $data = get_part($stream, $msg_number, $mime_type, $sub_structure,$prefix . ($index + 1));
    if($data) {
    return $data;
    }
    } // END WHILE
    } // END MULTIPART
    } // END STRUTURE
    return false;
    } // END FUNCTION
	
    $mbox = imap_open("{127.0.0.1:143/imap/notls}", "adresse email", "mon mot de passe secret"); // CONNEXION AU SERVEUR IMAP
    
    $headers = imap_headers ($mbox); // RECUPERATION DES ENTETES
    if ($headers == false) {
    echo "Pas de mail en cours !\n"; // PAS DE MAILS :-(
    } else {
    while (list ($key,$val) = each ($headers)) { // ON PASSE TOUS LES MAILS EN REVUE
    $header = imap_headerinfo($mbox, $key+1, 100, 100);
    $dateMail = date("Y/m/d", $header->udate);
    $from = $header->from;
    $objetMail = $header->fetchsubject;

    $objetMail = imap_utf8($objetMail); // PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues
    $objetMail = utf8_encode($objetMail); // PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues
    $emailExp = $from[0]->mailbox."@".$from[0]->host;
    $corpsMail = get_part ($mbox, $key+1, "TEXT/PLAIN");
    $corpsMail = imap_utf8($corpsMail); // PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues
    $corpsMail = utf8_encode($corpsMail); // PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues
    $idtMail= $key+1;
	$joursemaine= date(‘w’); 
	$lundi = mysql_query("SELECT TO sauvegarde_config (lundi)");
	$mardi = mysql_query("SELECT TO sauvegarde_config (mardi)");
	$mercredi = mysql_query("SELECT TO sauvegarde_config (mercredi)");
	$jeudi = mysql_query("SELECT TO sauvegarde_config (jeudi)");
	$vendredi = mysql_query("SELECT TO sauvegarde_config (vendredi)");
	$samedi = mysql_query("SELECT TO sauvegarde_config (samedi)");
	$dimanche = mysql_query("SELECT TO sauvegarde_config (dimanche)");
	$verifsujet = mysql_query("SELECT TO sauvegarde_config (sujet)");
	$sauvegarde_succes = array("NAS est termin", "backup successful", "Sauvegarde ok");
	$check = imap_check($mbox);
	$nMessages = imap_num_msg($mbox);
	// Traitement mails
	if ($verifsujet == $objetMail)
		{
			if ($joursemaine == $lundi or $mardi or $mercredi or $jeudi or $vendredi or $samedi or $dimanche)
				{		
				$tableau = explode(' ', $corpsMail);
				foreach($tableau as $mot)
					{
						if (in_array($mot, $sauvegarde_succes))
							{
							mysql_query("INSERT INTO sauvegardes (sujet,corpsmail,datemail,dateactuelle,etatsauvegarde,txsauvegarde) VALUES ('".addslashes($objetMail)."','".addslashes($corpsMail)."','$dateMail',now(),'$sauvegardeok','100')");
													 for($index=1; $index <= $nMessages; $index++)
													 {
														$header = imap_header($mbox, $index); 
														imap_delete($mbox,$index,0);
													 }

							}
							else
							{
								mysql_query("INSERT INTO sauvegardes (sujet,corpsmail,datemail,dateactuelle,etatsauvegarde,txsauvegarde) VALUES ('$objetMail','$corpsMail','$dateMail',now(),'$sauvegardenok','0')");
							}
					}
				}
				else
				{
				 echo "La sauvegarde n'est pas vérifiée aujourd'hui";
				}
		}
		else
		{
		echo "Cette sauvegarde n'est pas inclus dans la configuration", $objetMail;
		}
imap_expunge($mbox);
imap_close($mbox,CL_EXPUNGE);	
	 //Fin traitements mails
	 
		// Début de Suppression des messages des sauvegardes Ok et seulement Ok.


// Fin Suppression des sauvegardes Ok.
?>
Car il m'indique ceci comme message d'erreur lorsque je l’exécute :
PHP Parse error:  syntax error, unexpected $end in /root/scripts/verifbackup.php on line 152
Merci de votre aide :)
Modifié en dernier par moogli le 10 août 2013, 20:38, modifié 2 fois.
Raison : suppression user / mot de passe

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 août 2013, 22:21

salut,

regarde ton code sur le forum tu la verra l'erreur.

pour éviter cela utilise au moins un editeur qui colorise la syntaxe (genre notepad++) ou un IDE comme eclipse, netbeans etc etc


@+
Il en faut peu pour être heureux ......

ViPHP
xTG
ViPHP | 7331 Messages

09 août 2013, 22:22

Regarder la coloration syntaxique avant toute chose. ;)
Ensuite si ta coloration syntaxique ne te montre rien il faudra rechercher le point virgule manquant ou la parenthèse.
http://www.commentcamarche.net/faq/1101 ... pected-end

Eléphant du PHP | 67 Messages

09 août 2013, 22:23

salut,

regarde ton code sur le forum tu la verra l'erreur.

pour éviter cela utilise au moins un editeur qui colorise la syntaxe (genre notepad++) ou un IDE comme eclipse, netbeans etc etc


@+

Oui j'utilise un notepad++ mais je ne vois pas l'erreur...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 août 2013, 22:25

O_o tu ne vois pas le rouge par tout dans ton code sur le forum ?

daltonien ? achromatique ?
Il en faut peu pour être heureux ......

Eléphant du PHP | 67 Messages

09 août 2013, 22:36

O_o tu ne vois pas le rouge par tout dans ton code sur le forum ?

daltonien ? achromatique ?
C'est corrigé mais j'ai fais l'erreur en modifiant le vrai mot de passe par celui ici

Sur mon code sous notepad, le ; y est bien.

L"erreur ne vient pas de là, donc merci d'éviter de se foutre de gens comme cela...

ViPHP
xTG
ViPHP | 7331 Messages

10 août 2013, 08:32

Reprends ton code et indente correctement chaque if..else cela sera déjà mieux à lire. Car c'est pas facile de debugguer un code non indenté.
Et si avec cette passe tu ne trouves pas d'accolades manquante il faudra revoir ligne par ligne pour trouver une parenthèse manquante ou un point virgule.

Eléphant du PHP | 67 Messages

10 août 2013, 12:20

Ok je vais regarder.

Pourquoi je ne peux plus éditer le message ?

Y a t-il moyen de supprimer mon code que j'ai mis en 1er message ?

Merci

ViPHP
xTG
ViPHP | 7331 Messages

10 août 2013, 12:38

L'édition des messages et leur suppression est limitée dans le temps.
Au bout de 24h tu ne peux plus les administrer.

Si tu souhaites faire supprimer une partie du message je te recommande d'en faire part à un modérateur.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 août 2013, 14:02

et pour info, a moins que bien sur ce ne soit une erreur de recopie, tu ne ferme pas le while ni le else du coup
Car il m'indique ceci comme message d'erreur lorsque je l’exécute :

Syntaxe: [ Télécharger ] [ Masquer ]
Code php
PHP Parse error:  syntax error, unexpected $end in /root/scripts/verifbackup.php on line 152
Supprimer une partie de ton message ne semble pas utile, rien de "compromettant" et il permet aux éventuelles personne qui chercheraient sur le forum avec la même erreur que toi d'avoir une idée de solution ;)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 67 Messages

10 août 2013, 14:24

Oui je ll'ai corrigé :) et tout fonctionne.

Si regarde bien dans l'imap open, il y a un truc de compromettant, si tu pouvais le supprimer :)

Merci

@+