• 締切済み

PHPでHTMLのページ飛ばす方法とコマンドラインの実行

プログラム上からメール送信がしたくて、PHPの手習い中超初心者ですが、 (1)PHPから強制的に特定のHTMLファイルの表示に行く方法が分かりません。header(Location;  )で飛んでから処理(メールの送信)をしても良いかなとも思いますますが、他に良い方法あれば教えてください。 (2)PHPのMail関数でMailがエラーなく終わるのですが、メールが届きません。ArGoSoftのMailServerでOutlookExpressからは、自由に送信着信可能です。コマンドラインから方法でEXEC()にパラメータを渡せるならその方法でやろうかとも思っていますが、何か良い方法はあるのでしょうか?

  • PHP
  • 回答数2
  • ありがとう数3

みんなの回答

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

>1)Locationってheaderの所に書かないとダメみたいなこと、どこかで読んだのですが。問題ないのでしょうか? 問題ありません。文字を出力(printやecho)前にやると最初は覚えていたほうが覚えやすいかもしれません。 (2)PHPでメール送信の方法を書籍やNetで調べて、mail(),mb_send_mail()などを試しても、正常終了したように見えるのですが、メールが届きません。php.iniのSMTPもプロバイダーのsmtpサーバ名にしたり、自分の立ち上げたサーバーの127.0.0.1や固定IPでつないでいるDNSにしてみたりしていますが、手ごたえありません。プログラム上からメール送るために、PHPをにわか勉強してる超初心者なのですが、PHPの作動をモニターするような方法はないのでしょうか。 プロバイダのSMTPを指定すればできるはずです。 ただし、プロバイダ側で、特定の接続先からでないとSMTP接続を許してくれないところがあります。 その場合はメール送信用のものを自前で用意するしかありません。 Win用のsendmail(有料。高い)を入れるとか、メールサーバをいれて、そこから送信するようにしないといけません。

CPU8080A
質問者

お礼

アドバイスいただいているのに気がつくのが遅くなり失礼しました。PHPからのメール発信もできるようになりました。php.iniで単にSMTP=にプロバイダーのsmtpサーバーを指定して、mb_Language('Japanese')とmb_send_mail('あて先アドレス','表題','本文','メーラーに表示される発信者名')で発信できました。LinuxとWindowsでphp.iniのどこが違うかを明確に書いたものに出会わなかったため、たった二行のプログラムにずいぶん時間がかかりました。固定IPをとっていたため、OP25B対策にひっかからなくてすんだようです。 Locationの件情報ありがとうございました。厚く御礼申しあげます。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

(1) 普通にメールを送信してからLocationで飛ばせばいいと思います。 (2) 普通はSendmailが使用されると思いますが、php.iniかなんかでSMTPを指定できるかと思います。そのような設定はしていますか? タイトルにあるコマンドラインの実行と言うのは何かしたいのですか?

CPU8080A
質問者

お礼

WinとUnix系とで、php.iniが違うのですね。php.iniのsmtp=にプロバイダーのsmtpサーバー名うお入れるだけで、成功しました。ありがとうございました。

CPU8080A
質問者

補足

ミスタイプしていたのに、お答え頂いてありがとうございます。 widowsXpPro上でやっています。 (1)Locationってheaderの所に書かないとダメみたいなこと、どこかで読んだのですが。問題ないのでしょうか? (2)PHPでメール送信の方法を書籍やNetで調べて、mail(),mb_send_mail()などを試しても、正常終了したように見えるのですが、メールが届きません。php.iniのSMTPもプロバイダーのsmtpサーバ名にしたり、自分の立ち上げたサーバーの127.0.0.1や固定IPでつないでいるDNSにしてみたりしていますが、手ごたえありません。プログラム上からメール送るために、PHPをにわか勉強してる超初心者なのですが、PHPの作動をモニターするような方法はないのでしょうか。 メール送信に成功した唯一の方法がコマンドラインからの送信なので、Exec()関数でできないか思ってるのですが。pathかphp.iniがおかしいのかもしれませんが、htdocディレクトリに置いた.phpファイルに書いたfunction_exist()で、一応使っている関数が存在することは確認しています。超初心者であることを念頭に、抜けてそうなことのアドバイス頂ければ有難いです。よろしくお願いいたします。

関連するQ&A

  • PHPからシェルコマンドの実行

    PHPからシェルコマンドを実行したいのですが SSHやSCPコマンドが使えません。 phpからlsなどは問題なく実行できます。 具体的には以下のように書いています。 `scp test.log user@host:/home/hoge`; shell_exec()を使っても実行されませんでした。 環境は以下のとおりです。 PHP 5.4.17 CentOS 5.8 sshやscpコマンドをphpから実行するには何か特別な方法が必要なのでしょうか。 ご存知の方、教えてください。

    • ベストアンサー
    • PHP
  • PerlでHTMLを読み込み記述されたSSIコマンド(exec)の実行を実現するには。

    HTMLファイルを読み込んで表示するCGIを作っています。 それで、そのHTMLファイルに記述されたSSIコマンドを、 そのCGIで認識して、それを実行する。ということを実現したいと思っています。 includeコマンドは簡単に実現ができたのですが、 execコマンドが完全には実現できません・・・。 一応、openのパイプを使って、 <!--#exec cmd="test.cgi" --> のようなコマンドを認識しそれを実行して返すことはできました。 しかし、test.cgi?a=wのように パラメータをつけての実行が実現できません。 もちろん、SSIと同じように、 execコマンドで実行する先のCGI、プログラムなどを 改変することなくそのまま実行できることが条件です。 (例えば、$ENV{'QUERY_STRING'}ではなくARGVを使うようにするのではダメなんです) お知恵をお貸しいただけると幸いです。 どうかよろしく御願いいたします。

    • ベストアンサー
    • Perl
  • PHPで特定のURLにジャンプする方法

    こんにちは。HTMLファイル上のText(mytext)から受け取ったデータに基づいて、特定のURLにジャンプさせる方法を探しています。 以下のようなコードを作りました。しかし、これだとエラーになります。 header("Location: ") の使い方自体に問題があるのか、それ以外に問題があるのかわかりません。 アドバイスをいただきたく、よろしくいお願いいたします。 <?php if ($_POST['mytext'] == "google") { header("Location: http://google.co.jp"); } else { header("Location: http://yahoo.co.jp"); } ?>

    • ベストアンサー
    • PHP
  • PHPからCプログラムを実行して実行結果をHTML上に表示

    PHP初心者です。PHPからCプログラムを実行して実行結果をHTML上に表示する方法が分からなく困っています。 Cプログラムの中身は、 #include <stdio.h> int main(){ printf("Hello."); } です。 phpの中身は、 <HTML> <HEAD><TITLE>Cプログラム呼び出し</TITLE></HEAD> <BODY> <?php $cmd = "test.exe"; $a = exec($cmd); echo $a; ?> </BODY> </HTML> としており、調べてみるとexec()関数で外部プログラムを実行すると書いてあったのでこのように作成しました。

    • ベストアンサー
    • PHP
  • phpで外部phpを稼働させる方法について

    初心者です、宜しくお願いします。 外部でメールを送信するプログラムを利用者にストレスが無いようにバックグラウンドで稼働させたいと考えています、   自分なりに調べて、exec関数でテストプログラムを作ってみましたが記述の方法に誤りがあるのか動きません、 sampleプログラム (test.php) <?php exec("nohup php -c '' 'sendmail.php' > /dev/null &"); ?> sendmail.phpは自分宛に送信するよう簡単に作ったプログラムで test.phpと同じディレクトリに設置してあります、 単独で実行するときちんと届きます、 パーミッションは双方とも、604に設定してあります。 どなたかご教授いただけると助かります。 宜しくお願い致します。

    • 締切済み
    • PHP
  • コマンド実行の成功有無を知りたい

    現在、PHP上からexec関数を使用してcdrecodのコマンドを 実行させCDを焼く処理を作成しているのですがCD作成の 成功有無を取得しようと思ってもどうすればよいかわかりません。 execでtrueやfalseが取得できれば理想なのですが何か良い方法は ありませんでしょうか?

    • ベストアンサー
    • PHP
  • 複数コマンドを実行するには

    一回で完結しないコマンドはどのように書けば、実行できるのでしょうか? たとえば、下記のようにコマンドを実行して、受信メールを表示させたいのですが、方法が分かりません。 ------------------------- telnet localhost pop3 user hoge@hoge.com pass hoge retr 1 ------------------------- 一回で完結していないので、当たり前かもしれませんが、 下記のようにやっても、エラーがでてしまいます。 ------------------------- shell_exec('telnet localhost pop3'); shell_exec('user hoge@hoge.com'); shell_exec('pass hoge'); echo shell_exec('retr 1'); -------------------------

    • ベストアンサー
    • PHP
  • HTMLとPHP

    こんにちは。いつもお世話になっています。 PHPとHTMLを勉強していてわからないことがあったのでよろしければ教えてください。 POSTでデータを取得するときにデータがあるか無いか判定してから、項目すべてに記入してあれば登録確認ページへ、空欄があればエラーページへいくようなサイトをつくったのですが、確認ページでデータが表示されませんでした。 if(!$_POST['name'] OR !$_POST['passwd'] OR !$_POST['address'] OR !$_POST['tel'] OR !$_POST['email']){ echo ("空欄があります。すべて記入して下さい。"); }else{ header("Location: http://localhost/my/myshop/confirm_user.php"); } エラー表示ページ(error.php)でこのように判定し、空欄がなければエラーページから確認ページ(confirm_user.php)へいくようにしました。 登録フォーム(input.php)で<FORM ACTION="error.php","confirm_user.php" METHOD="post"> としたのですが、2つのPHPにデータを送れないのでしょうか?

    • ベストアンサー
    • PHP
  • コマンドプロンプトから引数を渡して実行するには?

    メールを送信するPHPをコマンドプロンプトから実行しています。 メールが送信される事は確認しました。 使い勝手を少しでもよくするためにsubjectやfromの部分を コマンドプロンプトから引数で渡して実行してやりたいのですが どのようにすれば可能なのでしょうか? コマンドプロンプトの実行コマンド >php send_mail.php を >php send_mail.php subject from のようにしたいと考えてます。 <?php mb_language("japanese"); mb_internal_encoding("SJIS"); $to = "xxx@yyy.zzz"; $subject = "ここはsubject"; $body = "ここはbody"; $from = mb_encode_mimeheader("ここはfrom")."<xxx@yyy.zzz>";mb_send_mail($to,$subject,$body,"From:".$from); ?> 以上です、よろしくお願いします。

    • 締切済み
    • PHP
  • 【php】ログイン後、元いたページにリダイレクト

    こんばんは。phpを勉強し始めたばかりの者です。宜しくお願いします。 会員制サイトを作っています。 そこで、 ページにログインなしで来ると、ログインページにリダイレクト、ログインすると、元いた場所にリダイレクトされるようにしたいです。 以下のような方法はセキュリティ的に問題ありますでしょうか? セッションに戻るページを覚えさせて、 if (!isset($_SESSION["name"])) { $_SESSION['return'] = $_SERVER["REQUEST_URI"]; header("Location: login.php"); exit; } ログイン処理を終えた後、 if(!empty($_SESSION['return'])){ $url = $_SESSION['return']; header("Location: $url"); exit; } else { header("Location: top.php");// 戻るページがない場合、トップページへ exit; } のようにして、戻ります。 が、期待した通りの動きはできたのですが、セキュリティ的に問題がないかどうか不安です。 もし、やめた方が良いのでしたら、どのような方法が考えられますでしょうか。 ご指導ください。宜しくお願いします。

    • ベストアンサー
    • PHP