/etc/HELP : Comment lier deux scripts sous php ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : /etc/HELP : Comment lier deux scripts sous php ?

par jojolapine » 31 déc. 2006, 11:58

de rien! bon réveillon à toi aussi :wink: :fete: :boire9:

R-E-S-O-L-U !

par en attendant la valid » 31 déc. 2006, 02:37

R-E-S-O-L-U !

:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

Ouf!

Alors...

la question de l'upload du fichier AVANT de poster le message lui-même m'a beaucoup embêté et en testant gmail, j'ai remarqué que le fichier est uploadé lorsque le mail est envoyé, pas avant.

Donc j'ai repris le code de ma page et j'ai intégré le script d'upload afin que le message+le fichier soient uploadés en même temps.

Résultat, j'ai plus de problème avant la mise en place d'onLoad puisqu'il n'y a plus de fenêtre appelante ni de pop-up.

En fin de compte, le vieux dicton a raison : pour supprimer le problème, il suffit de supprimer la question :P

Je voudrais dire merci à mon papa et à ma maman sans qui je ne serais pas moi et ils sont là, dans la salle, ainsi qu'un gros merci à Jojolapine pour l'aide qu'il m'a apporté.

Bonne nuit et Génial, j'ai le droit de faire un break et je souhaite à tout le forum de passer un joyeux réveillon. See u en 2007 !

:wink:

par en attendant la valid » 30 déc. 2006, 23:51

En même temps, je me rends compte que ce n'est pas très cohérent ce que je fais.

petit rappel car je suis brouillon : J'ai d'un côté un script qui post des messages et de l'autre un script qui upload des images et je souhaite lier les deux.

Seulement avec ce que je fais actuellement, j'upload d'abord l'image PUIS je tente de lier le nom du fichier uploadé au message qui n'est pas encore envoyé. Si jamais l'utilisateur abandonne son message, trop tard pour l'image qui est déjà sur le serveur.

...pas cohérent tout ça...

:evil: :evil: :evil: :evil: :evil: :evil: :evil: :evil: :evil: :evil: :evil:

...du tout...

:twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted:

En fait, une fois que je réussi à récupérer le $nomdufichieruploadésurleserveur à renvoyer à la première page que je que je dev un petit script qui s'executera de manière régulière sur le serveur (grace à cron) et qui compare les fichiers sur le serveur et les noms de fichiers sur la bdd.

Un peu compliqué mais je verrais ça plus tard. Je vais déjà essayé de récupérer le $nomdufichieruploadésurleserveur...

par en attendant la valid » 30 déc. 2006, 23:25

Truc : bien noté pour les conditions d'utilisation du forum, j'ferai gaffe la prochaine fois.

Jojolapine :

Alors c'est bien ça. Et la dernière page,upload.php, attribue un nom aléatoire au fichier uploadé. Je souhaite que ce nom/variable soit envoyé à la première fenêtre appelante, post.php, afin de réutiliser ce nom pour la bdd ou pour un pré-affichage classique du fichier/photo).

Je suis rentré tout à l'heure et pour l'instant, nada :shock: mais pas de soucis, j'ai le moral :D et la ténacité :twisted:

par jojolapine » 30 déc. 2006, 14:52

merci pour le déplacement, donc je vais résumer au nom de notre amis qui attend sa validation (tu devrais te réinscrire d'ailleur, car je pense que la validation n'arrivera plus)
...
donc le problème est le suivant...
Nous sommes sur une page post.php, qui sert à répondre à un post sur un forum, sur cette page se trouve plus sieurs champq blablabla... ces champs ne nous interessent pas :langue:.
Par contre, il y a un petit lien, comme suit
<a href="#" onclick="window.open('upp.html');return false">photo</a>
qui permet d'ouvrir une popup pour uploader un fichier..., et un div vide comme ceci:
<div id="infos"></div>
la popup contient alors:
<form method="POST" action="upload.php" enctype="multipart/form-data">
     <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
     file: <input type="file" name="avatar">
     <input type="submit" name="envoyer" value="send this">
</form> 
normal quoi, le problème ne vient pas de là... ensuite on arrive sur upload.php qui doit ressembler à quelquecchose comme ça:
<?php
// traitement php qui fonctionne, on récupère l'état de l'upload (réussit ou non) dans par exemple $up= true/false
?>
<html>
<head>
  <script language="javascript">
  <!--
  function informer_parente(up){
    window.opener.getElementByID('infos').innerHTML= (up ? 'upload réussit' : 'upload loupé');// c'est là que ça foire...
   //le window.opener permet bien d'atteindre la page parente, mais comment aller sur le document de la page parente ?
    self.close();
}
-->
</script>
</head>
<body onLoad="informer_parente(<?php echo $up;?>)">
</body>
</html> 
voilà j'espère que 'jai bien résumé ? :lol:

par Truc » 30 déc. 2006, 14:01

EDIT: au fait c'est un sujet qui se rapporte à javascript désormais...
Appel à modos, pour déplacer se sujet dans javascript....
Je n'ai pas tout lu... je fait confiance :wink:

Modération :
en attendant la valid, les "up" sont interdits sur PHPFrance.

Merci de prendre le temps de lire les règlements.

par en attendant la valid » 30 déc. 2006, 13:56

J'"up" comme je peux :-)

Je vais reprendre mot pour mot ton code et tenter de faire le test tout de suite (j'ai mes beaux-parents de passage + je dois voir les miens après).

Sinon, mon problème est peut-être le suivant :

post.php, fenêtre appelante, ouvre un pop-up, upp.html, qui lui même va ouvrir une troisième fenêtre, upload.php, lorsque le fichier est uploader. Ca fait donc 3 pages. Enfin, c'est une idée mais en attendant, je vais rereretester. Merci encore pour ton aide!

bien déguisé le "up" :langue:
mais sinon je ne comprend pas l'erreur qui peut se passer...
j'ai du faire une bourde dans la transcription de mon location.reload, en getElementById
car dans un de mes sites, j'ai mis ceci:
<?php
//traitement php
?>
<html>
<head>
  <script language="javascript">
  <!--
  function enregistrer(){
	window.opener.location.reload(true);
	self.close();
}
-->
</script>
</head>
<body onLoad="enregistrer()">
</body>
</html>
et voici comment j'appel cette popup
<img onClick="detail(arguments)" src="..." alt="..." />
et la fonctions detail:
function detail(arguments){
    msg=window.open("page.html","","width=560px,height=620px,toolbar=no,location=no,directories=no,statusbar=no,status=no,menubar=no,scrollbars=yes,resizable=no");
  }
EDIT: au fait c'est un sujet qui se rapporte à javascript désormais...
Appel à modos, pour déplacer se sujet dans javascript....

par jojolapine » 30 déc. 2006, 13:47

bien déguisé le "up" :langue:
mais sinon je ne comprend pas l'erreur qui peut se passer...
j'ai du faire une bourde dans la transcription de mon location.reload, en getElementById
car dans un de mes sites, j'ai mis ceci:
<?php
//traitement php
?>
<html>
<head>
  <script language="javascript">
  <!--
  function enregistrer(){
	window.opener.location.reload(true);
	self.close();
}
-->
</script>
</head>
<body onLoad="enregistrer()">
</body>
</html>
et voici comment j'appel cette popup
<img onClick="detail(arguments)" src="..." alt="..." />
et la fonctions detail:
function detail(arguments){
    msg=window.open("page.html","","width=560px,height=620px,toolbar=no,location=no,directories=no,statusbar=no,status=no,menubar=no,scrollbars=yes,resizable=no");
  }
EDIT: au fait c'est un sujet qui se rapporte à javascript désormais...
Appel à modos, pour déplacer se sujet dans javascript....

par en attendant la valid » 30 déc. 2006, 13:41

Sinon ça va :D

Je continue à taffer là-dessus. Y'a un truc qu j'ai pas du réussir à comprendre car j'y arrive toujours pas :roll:

par en attendant la valid » 30 déc. 2006, 00:09

Ca y est :-)

Firefox me dit :

Erreur : window.opener.getElementById is not a function
Fichier source : upload.php
Ligne : 6

par jojolapine » 29 déc. 2006, 23:57

attention, dans ton fichier post.php, il ne faut pas écrire <div id=infos> mais
<div id="infos"></div>
refait des essais et reviens me dire... ;-)
d'autres part si tu travail avec firefox ou opéra, tu as une console d'erreur javascript... sert t'en !

par en attendant la valid » 29 déc. 2006, 23:54

Ha oui, pour un souci de clareté, j'ai mis les pages d'origine.

Par la suite. J'ai ajouté ces lignes :


post.php et dans les <? ?> :

Code : Tout sélectionner

print "<a href=\"#\" onclick=\"window.open('upp.html');return false\">photo</a>";
post.php et après ?>

Code : Tout sélectionner

<div id=infos>

dans upp.html :

rien du tout

et dans upload.php, tout en bas et après le ?> :

Code : Tout sélectionner

<html> <head> <script language="javascript"> <!-- function enregistrer(){ window.opener.getElementById('infos').innerHTML="<?php echo ($up ? 'fichier bien uploadé' : 'erreur durant l\'upload'); ?>"; self.close(); } --> </script> </head> <body onLoad="enregistrer()"> </body> </html>
Et lorsque le fichier est uploadé, je ne réussi pas à informer post.php du nom du fichier uploadé :cry:

par jojolapine » 29 déc. 2006, 23:22

j'ai eu beau chercher, je n'ai pas trouvé la ligne qui permet d'écrire le code d'ouverture de la popup, ensuite, tu n'as pas fait les modifications dans upload.php, pour permettre d'envoyer les infos en javascript à la page post.php qui d'ailleur ne contient pas de div permettant de receuillir une tite phrase d'information...

par en attendant la valid » 29 déc. 2006, 23:19

phpBB ?

Merci du conseil car c'est vrai que c'est un sacré logiciel ! et je parle pas du mod upload_pic qui était excellent !

Mais il ne correspond(ait?) malheureusement pas à un ch'ti comme moi. J'ai commencé par phpBB2, puis j'ai imprimé la page search.php que je voulais modifier. Résultat : 23 pages ! (si j'ai bonne mémoire)

J'ai passé des soirées et des soirées à couper du code, à effacer des données etc. à droper du sql etc. etc.

Et puis je me suis dis que j'avais envie de comprendre un peu plus ce que je faisais et j'ai laissé tomber phpbb2. J'ai testé phorum mais il était encore trop évolué pour un cerveau comme le mien :lol:

En fin de compte, j'ai trouvé -ze- forum à partir duquel je peux taffer (j'ai failli commencer from scratch mais bon) : board. L'architecture est déjà là et pour le reste, je redev. Je m'amuse bien et vous imaginez pas à quel point j'ai progresser (sql...php...javascript...html et le jour où je termine le forum, je vais essayer de comprendre ajax car ça a l'air bien pratique).

Voili voulou. Mais bientôt, le forum que je fais il aura rien à envier à phpbb2 !!! Le mien aura juste l'air préhistorique, mais c'est tendance!! :P :P

par en attendant la valid » 29 déc. 2006, 23:08

Merci infiniment pour ton aide. Je te présente les 3 fichiers d'origine :

post.php, upp.html, upload.php.

Alors voici le post.php :

Code : Tout sélectionner

<?php include 'connect.php'; session_start(); ?> <center> <?php include "admin/var.php"; ?> </center> <br><br> <center> <?php $user=$_SESSION['user']; $getuser="SELECT * from b_users a, b_templates b where b.templateid=a.templateclass and a.username='$user'"; $getuser2=mysql_query($getuser) or die("Could not get user info"); $getuser3=mysql_fetch_array($getuser2); if(strlen($getuser3[username])>1) { $templateclass=$getuser3['templatepath']; } else { $templateclass="default"; } print "<link rel='stylesheet' href='/templates/$templateclass/style.css' type='text/css'>"; //chooses which template to display $forumID=$_GET['forumID']; $s=$_SERVER["REMOTE_ADDR"]; $checkip="SELECT * from b_banip where ip='$s'"; $checkip2=mysql_query($checkip) or die("Could not get ips"); $checkip3=mysql_fetch_array($checkip2); if($checkip3) { die("<table class='maintable'><tr class='headline'><td><center>New Topic</center></td></tr><tr class='forumrow'><td><center>Your IP was banned from posting</center></td></tr></table>"); } if (isset($_SESSION['user'])||$guestposting=="Yes"||$guestposting=="yes") { $user=$_SESSION['user']; $getid="SELECT * from b_users where username='$user'"; $getid2=mysql_query($getid) or die("could not get user"); $getid3=mysql_fetch_array($getid2); $getforuminfo="SELECT * from b_forums where ID='$forumID'"; $getforuminfo2=mysql_query($getforuminfo) or die("COuld not get forum info"); $getforuminfo3=mysql_fetch_array($getforuminfo2); if(!$_SESSION['user']) { $getid3[status]=-1; } $thetime=date("U"); if($getid3[lastposttime]>$thetime-30) { die("<table class='maintable'><tr class='headline'><td><center>New Topic</center></td></tr><tr class='forumrow'><td><center>You can only post once every 30 seconds</center></td></tr></table>"); } if($getforuminfo3[permission_post]>$getid3[status]) { die("<table class='maintable'><tr class='headline'><td><center>New Topic</center></td></tr><tr class='forumrow'><td><center>You Do not have permission to post in this forum</center></td></tr></table>"); } if($getid3[banned]=="Yes") { die("<table class='maintable'><tr class='headline'><td><center>New Topic</center></td></tr><tr class='forumrow'><td><center>You have been banned from posting</center></td></tr></table>"); } if(isset($_POST['submitpost'])) { if(!$_POST['title'] || !$_POST['post'] || !$_GET['forumID']) { print "<table class='maintable'>"; print "<tr class='headline'><td><center>New Topic</center></td></tr>"; print "<tr class='forumrow'><td><center>"; print "One of the required fields was not filled in, please go back and try again"; print "</td></tr></table>"; } else { $name=$getid3['userID']; $title=$_POST['title']; $post=$_POST['post']; $day=date("D M d, Y H:i:s"); $timegone=date("U") ; if($_POST['nosmiley']) { $nosmiley=1; } else { $nosmiley=0; } if(!$_SESSION['user']) { $user="Guest"; } $name=strip_tags($name); $title=strip_tags($title); $post=htmlentities($post); $posting="INSERT INTO b_posts (author, title, post,timepost, telapsed, postforum,lastpost,nosmilies,ipaddress) values ('$name', '$title', '$post', '$day', '$timegone','$forumID','$user','$nosmiley','$s')"; mysql_query($posting) or die("could not post"); if(isset($_SESSION['user'])) { $today=date("U"); $updates="update b_forums set numtopics=numtopics+1, numposts=numposts+1, lastpost='$day', lastpostuser='$user',lastposttime='$today' where ID='$forumID'"; mysql_query($updates); $updateuser="update b_users set Posts=Posts+1, lastposttime='$today' where username='$user'"; mysql_query($updateuser) or die("COuld not update numposts"); } else { $today=date("U"); $updates="update b_forums set numtopics=numtopics+1, numposts=numposts+1, lastpost='$day', lastpostuser='Guest',lastposttime='$today' where ID='$forumID'"; mysql_query($updates) or die("Could not update forums"); } print "<table class='maintable'>"; print "<tr class='headline'><td><center>New Topic</center></td></tr>"; print "<tr class='forumrow'><td><center>"; print "Thanks for posting... Redirecting to forum index <META HTTP-EQUIV = 'Refresh' Content = '2; URL =index.php?forumID=$forumID'>"; print "</td></tr></table>"; } } else { print "<table class='maintable'>"; print "<tr class='headline'><td><center>New Topic</center></td></tr>"; print "<tr class='forumrow'><td><center>"; print "<table border='0'><tr class='forumrow'><td>"; print "<form action='newtopic.php?forumID=$forumID' method='post' name='form'>"; if(isset($_SESSION['user'])) { print "<input type='hidden' name='name' value=$getid3[userID]><br>"; print "<b>Name:</b> $user<br>"; } else { $getguest="SELECT * FROM b_users WHERE username='Guest'"; $getguest2=mysql_query($getguest); $getguest3=mysql_fetch_array($getguest2); print "<input type='hidden' name='name' value='$getguest3[userID]'><br>"; print "<b>Name:</b> Guest<br>"; } print "<b>Topic:</b><br>"; print "<input type='text' name='title' length='15'><br><br>"; print "<b>Message:</b><br><br>"; print "<a onClick=\"addSmiley('[b][/b]')\"><img src='images/bold.gif'></a> "; print "<a onClick=\"addSmiley('[i][/i]')\"><img src='images/italic.gif'></a> "; print "<a onClick=\"addSmiley('[u][/u]')\"><img src='images/underline.gif'></a> "; print "<a onClick=\"addSmiley('[img][/img]')\"><img src='images/img.gif'></a> "; print "<a onClick=\"addSmiley('[url][/url]')\"><img src='images/url.gif'></a> "; print "<a onClick=\"addSmiley('[mail][/mail]')\"><img src='images/mail.gif'></a><br><br>"; print "<textarea rows='6' name='post' cols='45'></textarea><br><br>"; print "<input type='checkbox' name='nosmiley'>&nbsp;Disable Smilies<br><br>"; print "<input type='submit' name='submitpost' value='Post'>"; print "</form><br><br>"; print "Clickable Smilies<br>"; print "<a onClick=\"addSmiley(':)')\"><img src='images/smile.gif'></a> "; print "<a onClick=\"addSmiley(':blush')\"><img src='images/blush.gif'></a> "; print "<a onClick=\"addSmiley(':angry')\"><img src='images/angry.gif'></a> "; print "<a onClick=\"addSmiley(':shocked')\"><img src='images/shocked.gif'></a> "; print "<a onClick=\"addSmiley(':cool')\"><img src='images/cool.gif'></a> "; print "<a onclick=\"addSmiley(':{blink}')\"><img src='images/winking.gif'></a>"; print "<A onclick=\"addSmiley('{clover}')\"><img src='images/clover.gif'></a>"; print "<a onclick=\"addSmiley(':[glasses]')\"><img src='images/glasses.gif'></a>"; print "<a onclick=\"addSmiley(':[barf]')\"><img src='images/barf.gif'></a>"; print "<a onclick=\"addSmiley(':[reallymad]')\"><img src='images/mad.gif'></a><br>"; print "<a onclick=\"addSmiley(':[normal]')\"><img src='../smiley/normal.gif'></a>"; print "<a onclick=\"addSmiley(':[inqu]')\"><img src='../smiley/inquisitive.gif'></a>"; print "<a onclick=\"addSmiley(':[happyinlove]')\"><img src='../smiley/happyinlove.gif'></a>"; print "<a onclick=\"addSmiley(':[sadinlove]')\"><img src='../smiley/sadinlove.gif'></a>"; print "<a onclick=\"addSmiley(':[normalinlove]')\"><img src='../smiley/normalaboutlove.gif'></a><br>"; print "<a onclick=\"addSmiley(':[bangry]')\"><img src='../smiley/angry.jpg'></a>"; print "<a onclick=\"addSmiley(':[grin]')\"><img src='../smiley/grin.jpg'></a>"; print "<a onclick=\"addSmiley(':[sadness]')\"><img src='../smiley/sadness.jpg'></a>"; print "<a onclick=\"addSmiley(':[smilies]')\"><img src='../smiley/smiles.jpg'></a>"; print "<a onclick=\"addSmiley(':[winking]')\"><img src='../smiley/winking.jpg'></a><br>"; print "<script language=\"JavaScript\" type=\"text/javascript\">\n"; print "function addSmiley(textToAdd)\n"; print "{\n"; print "document.form.post.value += textToAdd;"; print "document.form.post.focus();\n"; print "}\n"; print "</script>\n"; print "</td></tr></table></center>"; print "</td></tr></table>"; } } else { print "<table class='maintable'>"; print "<tr class='headline'><td><center>New Topic</center></td></tr>"; print "<tr class='forumrow'><td><center>"; print "Not logged in, please <A href='login.php'>Go here</a> to log in"; print "</td></tr></table>"; } ?> </center> <br><br> <center>
Puis le upp.html :

Code : Tout sélectionner

<form method="POST" action="upload.php" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> file: <input type="file" name="avatar"> <input type="submit" name="envoyer" value="send this"> </form>
Enfin le upload.php

Code : Tout sélectionner

<? $dossier = 'upload/'; $fichier = basename($_FILES['avatar']['name']); $taille_maxi = 100000; $taille = filesize($_FILES['avatar']['tmp_name']); $extensions = array('.png', '.gif', '.jpg', '.jpeg'); $extension = strrchr($_FILES['avatar']['name'], '.'); if(!in_array($extension, $extensions)) { $erreur = 'doc, pdf, rtf, png, gif, jpg or jpeg seulement...'; } if($taille>$taille_maxi) { $erreur = 'max: 1 mo!...'; } if(!isset($erreur)) { $fichier = substr(md5(microtime()), 0, 5)."".$extension; if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) { echo 'good!'; } else { echo 'bad!'; } } else { echo $erreur; } ?>
Merci pour toute aide! Pour ma part, je vais continuer à essayer d'intégrer le onload ET JE PASSE PAS DE REVEILLON TANT QUE CA MARCHE PAS !! :P