Bonjour à tous,

Je viens de créer une page php qui est capable d'écrire sur un forum phpbb3 sans passer par le forum.
Comme vous pourrez le voir, il n'y a pas d'interface, tout est prêt enregistrer de manières que l'on lance la page, le message préprogrammé parte directement. A ce niveau là pas de soucis

Par je contre je cherche depuis quelque jour un moyen de fermer cette page automatiquement qui marche sous chrome, même si ça coupe tous les onglet.

auriez vous une idée, expliquer de manières très simple car, la page suivante m'a pris 20h de boulot car je ne suis pas à l'aise en php et mysql.

merci d'avance.

flo

<?php
//déclaration pour la table phpbb_post
$post_id ;
$topic_id ='413';
$forum_id ='17';
$poster_id ='148';
$icon_id ='0';
$poster_ip = ' *******';
$post_time = time();
$post_approved ='1';
$post_reported ='0';
$enable_bbcode ='1';
$enable_smilies ='1';
$enable_magic_url ='1';
$enable_sig ='1';
$post_username ='';
$post_subject = date('d F Y H:i');
$post_text ='Bonjour à tous, Démarrage de la session';
$post_checksum =md5($post_text);
$post_attachment ='0';
$bbcode_bitfield ='';
$bbcode_uid='';
$post_postcount ='1';
$post_edit_time ='0';
$post_edit_reason ='';
$post_edit_user ='0';
$post_edit_count ='0';
$post_edit_locked ='0';
//déclaration pour la table phpbb_topic qui va être modifiée
$topic_replies ; //nombre de réponse
$topic_replies_real ; //nombre de réponse réelle
$topic_last_post_id; //numéro global message
$topic_last_poster_id='148';
$topic_last_poster_name = "RADAC";
$topic_last_post_subject = date('d F Y H:i');;
$topic_last_post_time = time();
// déclaration pour la base de donnée
$host = ' ******';
$user = ' ******';
$pass = ' ******';
$db = ' ******';
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
//création du nouvel post_id et modification dans la table topic
$post_id = mysql_query('SELECT MAX( post_id ) FROM `phpbb_posts` LIMIT 1');
$post_id = mysql_result($post_id,0);
$post_id= $post_id+1;
$sql = 'UPDATE ' . phpbb_topics . "
    SET topic_last_post_id = $post_id
    WHERE topic_id =$topic_id" ;
mysql_query($sql) or die ('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());
//création de la nouvelle date et modification dans la table topic
$sql = 'UPDATE ' . phpbb_topics . "
    SET topic_last_post_time =$topic_last_post_time
    WHERE topic_id =$topic_id" ;
mysql_query($sql) or die ('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());
//création du last_poster_id et modification dans la table topic
$sql = 'UPDATE ' . phpbb_topics . "
    SET topic_last_poster_id = $topic_last_poster_id
    WHERE topic_id =$topic_id" ;
mysql_query($sql) or die ('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());
//création du last_poster_name et modification dans la table topic
$sql = 'UPDATE ' . phpbb_topics . "
    SET topic_last_poster_name = '$topic_last_poster_name'
    WHERE topic_id =$topic_id" ;
mysql_query($sql) or die ('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());
//création du topic_last_subject et modification dans la table topic
$sql = 'UPDATE ' . phpbb_topics . "
    SET topic_last_post_subject = '$topic_last_post_subject'
    WHERE topic_id =$topic_id" ;
mysql_query($sql) or die ('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());
//création du nouvel $topic_replies_real et modification dans la table topic
$topic_replies_real = mysql_query('SELECT topic_replies_real FROM `phpbb_topics` WHERE topic_id = 413');
$topic_replies_real = mysql_result($topic_replies_real,0);
$topic_replies_real= $topic_replies_real+1;
$sql = 'UPDATE ' . phpbb_topics . "
    SET topic_replies_real = $topic_replies_real
    WHERE topic_id =$topic_id" ;
mysql_query($sql) or die ('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());
//création du nouvel $topic_replies et modification dans la table topic
$topic_replies = mysql_query('SELECT topic_replies FROM `phpbb_topics` WHERE topic_id = 413');
$topic_replies = mysql_result($topic_replies,0);
$topic_replies = $topic_replies+1;
$sql = 'UPDATE ' . phpbb_topics . "
    SET topic_replies = $topic_replies
    WHERE topic_id =$topic_id" ;
mysql_query($sql) or die ('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());
//création du nouvel message et modification dans la table post
$sql= "INSERT INTO phpbb_posts(post_id,topic_id,forum_id,poster_id,icon_id,poster_ip,post_time,post_approved,post_reported,enable_bbcode,enable_smilies,enable_magic_url,enable_sig,post_username,post_subject,post_text,post_checksum,post_attachment,bbcode_bitfield,bbcode_uid,post_postcount,post_edit_time,post_edit_reason,post_edit_user,post_edit_count,post_edit_locked) VALUES('$post_id','$topic_id','$forum_id','$poster_id','$icon_id','$poster_ip','$post_time','$post_approved','$post_reported','$enable_bbcode','$enable_smilies','$enable_magic_url','$enable_sig','$post_username','$post_subject','$post_text','$post_checksum','$post_attachment','$bbcode_bitfield','$bbcode_uid','$post_postcount','$post_edit_time','$post_edit_reason','$post_edit_user','$post_edit_count','$post_edit_locked')";
mysql_query($sql) or die ('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());
mysql_close();
echo "<script language='javascript'>window.close()</script>";
?>

4 réponses


flo3376
Auteur

un petit up

A quoi sert ce code au juste ?
Puis il y a quelques petites "erreurs" dans ton code :

$post_id= $post_id+1; => $post_id++; (line.52) + (line.96) + (line.86)

Utilise la connexion en POO pour aller beaucoup plus vite, c'est dur à apprendre mais très utile une fois compris.

Et puis pourquoi mettre toutes ces variables ? Si la variable est utilisé qu'une fois, mets plutôt = 1 que = $var.

flo3376
Auteur

Alors ce code permet à un ordinateur d'envoyer des message de manières autonome sur un forum, pour signaler son bon démarrage, ses redémarrages, ou son extinction de fin de journée.

Alors pour cette astuce: $post_id= $post_id+1; => $post_id++;, je le connaissais sur un autre langage que j'utilise pour des automate, et je ne s'avais qu'il était valable en php, merci de me le dire.

pour la connexion en "PDO" je présume, aucune notion et pas envie de me compliquer la tache, je code que très occasionnellement, donc avec déja le peux que je connais je peux faire ce que je veux ou presque, même si pas moment le code est infamme.

pour ce qui est de ma gestion des variables, je préfére prendre un chemin bien décomposé, se qui permet de trouver plus facilement mes erreurs par moment. 2+2+2=6 moi je vois mieux comme ça 2+2=4 4+2=6.

Maintenant ça me dis toujours pas comment fermer cette fenêtre automatiquement en fin de script.

alors je me permet ce petit up.

merci d'avance

@+ flo

flo3376
Auteur

je sais c'est pas bien mais, UP