2016-08-23 12 views
0

My xatafaceウェブサイトには、PHPWordを使用して手紙を作成するアクションがあります。私は署名の画像で手紙に署名しようとしていますが、私は単に画像ファイルをサーバに保存したくありません。私はそれがPHPから作成されるように、私はいくつかの許可チェックを行い、 "それを見ることができる人またはページ"にのみ署名を表示することができます。条件付きで画像をXatafaceのPHPWord文書に挿入

私の最初のアイデアは、画像としてインラインのデータを持つPHPファイルを作成することでした。理論的にはリクエストがxatafaceから来た場合は署名を表示できますが、同じサイズの空白の画像は表示されませんPHPファイルはXatafaceコンテキストにないため、誰がログインしているかを知ることができません:-( 正常に動作します。画像は文書内に正しく表示され、誰が閲覧できるかを制御できません。

次へ上記のPHPの機能をアクションハンドラにラップして、 $section->addMemoryImage("http://localhost/site/index.php?-action=sigfile");をPHPWord docを生成するスクリプトで使用しましたが、PHPログに「ハンドラに入れないで」サポートされていないイメージタイプを取得します。

私はまた、 "working image code"をテンプレート/ sigfile.htmlに入れてみましたが、 "サポートされていないイメージタイプ"も取得します。私がそれをxatafaceのもので包んでもそれはしません)

私が働いているのは、「秘密の鍵」を使用していることだけです。 PHPWordドキュメントは$section->addMemoryImage("http://localhost/site/sig.php?a=1&b=2&c=3");を行い、スクリプトはちょうどb=2を探している - 残りは単なるノイズであるが、それはほとんど安全です...

他のアイデアは、PHPはディスク(サーバ側)にイメージを書き込む持っていることになる、使用それを削除します。どのように安全であるかわからない。

私はこれを行う簡単な方法がありませんか?

答えて

1

私があなただったら、addMemoryImage()を呼び出す直前にイメージを一時記憶域に書きます。次に、ローカルパスを参照するだけです。 それが安全な場合は、イメージを削除してください... PHPWordの動作、addMemoryImage()呼び出しの直後、または後でレンダリングステップの後にあるかもしれません。

URLの一部としてセッションIDを渡すと、http:// urlを使用するという目標は機能します。 see here for details on that

それで、同じセッションを使用します。ただし、PHPセッションがロックされているため、デッドロックに注意する必要があります...一度に1つのリクエストだけが特定のセッションにアクセスできます。したがって、バックグラウンド要求を行う前に、まず最初のアクションでセッションを閉じる必要があります。

イメージを一時記憶域に書き込むのがずっと簡単で、完了したら削除する方が簡単です。

+0

Thanks Steve(Steve?)。それは私のアイデアの1つでしたが、より洗練された方法があると思っていました。 xatafaceの動作はほとんど動作しましたが、イメージは認識されませんでした。そのため、アクションに関する何かがgdイメージかPHPの単語を混乱させると推測しています。 – John3136