特に奇妙な問題が発生しました。フォームから渡されたデータを POST を使用して取得し、変数に代入したところ、最初にこの変数を取得したときは、echo で問題なく表示できました。しかし、関数の実行中に消えてしまいました。 ! !
当初は、変数変換プロセス中の誤った書き込みが原因であると考えていましたが、調べてみるとそうではなく、特に奇妙な点は次のとおりです:
strtotime 関数を使用する前は、これをエコー出力しても問題はありませんでした変数! strtotime($time); を直接エコーしても問題ありませんが、$time=strtotime($time); を実行してから再度エコーすると、空であることがわかりました。 ! !空の! ! !
PS: 以前、コントローラーのデータはフロントエンドページに正しく渡されましたが、印刷時にコントローラーで print_r($res) を実行した限り、表示されませんでした。この配列で、ページが の位置に対応していることが分かり、実際に表示できるようになりました! ! !
これは ECSHOP のバグですか?じゃあ何?神様、アドバイスをください!
コードを投稿して見てください。 。 。
この場合、POST 値は送信されませんでしたか?フォームを再送信して、もう一度お試しください。
コードを投稿して見てください。 。 。
<?php $partners = $_POST['partners'];$starttime = $_POST['starttime'];$endtime1 = $_POST['endtime'];$sort_order = $_POST['sort_order'];@$id = $_POST['id'];$act = $_GET['act'];$actarr = array('add','edit');if(!in_array($act,$actarr) || ($id == '')){ header('Location: partners.php?act=list');}if(!empty($partners) && !empty($starttime) && !empty($endtime1)){ if(!get_magic_quotes_gpc()) { $partners = addslashes($partners); } $starttime = strtotime($starttime); $endtime = strtotime($endtime1); @ $db = new mysqli('localhost', 'root', 'root', 'zhubao'); $db->set_charset("utf8"); if(mysqli_connect_errno()){ echo 'Error: Could not connect to database. Please try again later.'; exit; } if($act == 'add'){ $sql = "insert into ecs_partners (partners, starttime, endtime, sort_order)". " values('".$partners."', ".$starttime.", ".$endtime.", ".$sort_order.")"; }elseif($act =='edit'){ $sql = "update ecs_partners set partners='".$partners."', starttime=".$starttime. ", endtime=".$endtime.", sort_order=".$sort_order." where id=".$id; } $res = $db->query($sql); if($res){ echo "插入成功, 3秒后跳?<br />"; echo "或<a href='partners.php?act=list'>???接直接跳?</a>"; //header("Location: partners.php?act=list"); header("Refresh:3; url=partners.php?act=list"); }else{ echo "插入??出?,?稍後重?.<br />"; echo "或<a href='partners.php?act=list'>??回到主?面</a>"; } $db->close();}?>
コードを投稿して見てください。 。 。
コードを投稿して見てください。 。 。
言い忘れていましたが、時間はjsによって判断され処理されるので、直接渡しました $endtime = strtotime($endtime1);
strtotime関数の場合: 成功した場合はタイムスタンプを返し、それ以外の場合はFALSEを返します
$を渡しますendtime1 具体的な値は何ですか? ? echo strtotime($endtime1) とは何ですか? ?
$endtime = strtotime($endtime1);
strtotime 関数の場合: 成功した場合はタイムスタンプを返し、それ以外の場合は FALSE を返します
渡した $endtime1 の具体的な値は何ですか? ? echo strtotime($endtime1) とは何ですか? ?
$endtime = strtotime($endtime1); strtotime 関数の場合: 成功した場合はタイムスタンプを返し、それ以外の場合は FALSE を返します
$endtime1 渡される具体的な値は何ですか? ? echo strtotime($endtime1) とは何ですか? ?
渡されるのは、フォーマットされた時刻文字列: 2015-09-05 です。エコーされるのは、通常どおり出力できる変換されたタイムスタンプです。
重要なのは、変数が代入ステートメントの後に出力されるとき、実際には空であるということです
あなたのステートメントを使用してコンピューターでテストしましたが、結果は正常で、投稿者が指摘した問題はありません。 。 。それは本当に奇妙です - empty は null を意味しますか
さて、もう一度試してみると、var_dump(strtotime($endtime)) が bool(false) になっていることがわかりました
重要なのは、変数が代入ステートメントの後に出力されるとき、実際には空であるということです
あなたのステートメントを使用してコンピューターでテストしましたが、結果は正常で、投稿者が指摘した問題はありません。 。 。本当に奇妙です - 空というのは null の意味ですか?
この種のことは奇妙すぎて、言葉で明確に表現することができません。他の生徒を探してみます
理解できません。 Aiteモデレーターが見ていきます…
$endtime = strtotime($endtime1);
strtotime 関数の場合: 成功した場合はタイムスタンプを返し、それ以外の場合は FALSE を返します
渡した $endtime1 の具体的な値は何ですか? ? echo strtotime($endtime1) とは何ですか? ?
$endtime = strtotime($endtime1);
strtotime 関数の場合: 成功した場合はタイムスタンプを返し、それ以外の場合は FALSE を返します
渡した $endtime1 の具体的な値は何ですか? ? echo strtotime($endtime1) とは何ですか? ?
渡されるのは、フォーマットされた時刻文字列: 2015-09-05 です。エコーされるのは、通常どおり出力できる変換されたタイムスタンプです。
重要なのは、変数が代入ステートメントの後に出力されるとき、実際には空であるということです
$endtime = strtotime ($endtime1);
strtotime 関数の場合: 成功した場合はタイムスタンプが返され、それ以外の場合は FALSE が返されます
渡した $endtime1 の具体的な値は何ですか? ? echo strtotime($endtime1) とは何ですか? ?
渡されるのは、フォーマットされた時刻文字列: 2015-09-05 です。エコーされるのは、通常どおり出力できる変換されたタイムスタンプです。
重要なのは、変数が代入ステートメントの後に出力されるとき、実際には空であるということです
あなたのステートメントを使用してコンピューターでテストしましたが、結果は正常で、投稿者が指摘した問題はありません。 。 。本当に奇妙です - empty は null を意味しますか?現時点では dump は存在しないので、間違いなく false が出力されます。変数名を間違えていませんか?
これは strtotime の適用範囲に関する質問です
マニュアルには次の内容が含まれています:
strtotime は 2069 年以降の日付を処理できないと推測できます
これはあなたの子供や孫の問題であり、心配する必要はありません
ということでした。 。 。 。 。 。
どういう意味ですか?
strtotime は 2069 年以降の日付を処理できないと推測できます
これはあなたの子供や孫の問題です。心配する必要はありませんそれ はい、クラスメートのコンピュータを使用しています 確認しましたつまり、クラスメートは 2070 年以降のタイムスタンプを strtotime で出力できるということですか? ?
これは strtotime の適用範囲に関する質問です
これはあなたの子供や孫の問題であり、あなたが行うことではありません心配する必要があります
わかりました、私はそれを使用しています 私のクラスメートのコンピュータがそれを確認しました
つまり、あなたのクラスメートは strtotime で 2070 年以降のタイムスタンプを出力できるということですか? ?
はい、2080 も可能です。また、自分で新しいファイルを作成し、strtotime を使用して直接 2070 を出力したので、PHP の問題である可能性があります。
返信を読んで、すごいと思いました〜
strtotimeの適用範囲についての質問です
マニュアルには次の内容が含まれています:
strtotimeは2069年以降の日付を処理できないと推測できます
これこれは子供や孫の問題ですから、心配する必要はありません
マニュアルには次のようなものが含まれています。 、心配する必要はありません
はいはい、クラスメートのコンピューターで確認しました
つまり、クラスメートは strtotime で 2070 年以降のタイムスタンプを出力できるということですか? ?
はい、2080 も可能です。また、自分で新しいファイルを作成し、strtotime で 2070 を直接出力したので、PHP の問題である可能性があります。
バージョンまたは PHP の設定の問題である可能性があります。通常の状況では、クラスメートと同じように正常に印刷できるはずであり、変数が失われることはありません。 。
おそらく、私が環境を構築したので、変更がほとんどなく、いくつかのモジュールが有効になっていないと思います。
then 32
PHP はバージョン 5.2 から DateTime クラスを導入しました (バージョン 5.1 で実験的に追加され、バージョン 5.3 でいくつかのメソッドが拡張されました)。
64 ビット Apache で問題を解決できるかどうかはわかりませんが、64 ビット Apache のダウンロードも確認していますが、まだ見つかりません。
ええと、64 ビット Apache があるはずですよね?笑
Y2K38 脆弱性
Y2K38 (Unix Millennium Bug としても知られる) この脆弱性は、すべての 32 ビット システムで時間を記録するために UNIX タイムスタンプ整数を使用する PHP およびその他のプログラミング言語に影響を与えます。整数変数を保存できる最大時間は、2038 年 1 月
19 日 03:14:07 です。この時間を超えると、整数値はオーバーフローします。 1970 年 1 月 1 日から 2038 年 1 月 19 日火曜日 03:14:07 UTC まで、2^31 ? 1 は
0x7FFFFFFF であることを見たことがあると思います。ビット システムでは、これは最大の符号付き整数を表します。これを秒数で表すと約68.1年に相当し、まさに1970年から2038年までの数字となります。
64 ビット システムは影響を受けますか?
理論的にはそうではありませんが、テストすることを強くお勧めします。 64 ビット システムで保存できる最も遠い日付は、現在の宇宙年齢の 21 倍である 292 億年です。
私のローカルシステムも64ビットシステムですが、私にもこの問題があることがわかりましたが、Apacheが32ビットであることを確認したため、64ビットシステムだけではなく、Apacheであれば回避できますこれも 64 ビットです
echo strtotime('2038/01/19 11:14:08') と echo strtotime('2038/01/19 11:14: 07'); 07 は出力できますが、08 は出力できません。ただし、win64 ビット システムで解決できるかどうかはまだテストしていません。ただし、Linux 64 ビットでは問題ないと思います。
理論上は不可能のようですが、私の勝利は 64 ビットであり、ソフトウェアも 64 ビットです。あなたは彼に尋ねることができます。彼の php バージョンが最新かどうかを確認するには、問題はありません。私の php は 5.5.15 です
echo strtotime('2038/01/19 11:14:08'); を試してみます。 '2038/01/19 11:14:07' ); 07 は出力できるが、08 は出力できないというのは本当ですか? オーバーフローの問題は確かですが、Win64 ビット システムでは解決できますか?まだ成功しました!ただし、Linux 64 ビットでは問題ないと思います。
echo strtotime('2038/01/19 11:14:08') と echo strtotime('2038/01/19 11) を試してみます。 :14:07'); 07 は出力できるが、08 は出力できないというのは本当ですか? オーバーフローの問題は確かですが、Win64 ビット システムでは解決できませんか?ただし、Linux 64 ビットでは問題ないと思います。
echo strtotime('2038/01/19 11:14:08' ) を試してみます; および echo strtotime('2038/01/19 11:14:07'); 07 は出力できますが、08 は出力できません。ただし、Win64 ビット システムでは解決できますか?まだ成功しました!ただし、Linux 64 ビットでは問題ないと思います。
64 ビット Linux バージョンの php を使用する場合は問題ありません
64 ビット Linux バージョンの php を使用する場合は問題ありません
centos+ のビルドに失敗しました。ソースコードを使用した Nginx+php+mariadb サーバー。何度も試しましたが、私の強度は大幅に低下しました
の 64 ビット Linux バージョンを使用する場合は問題ありません。 centos+Nginx+php+mariadb サーバーをソースコードで構築するのに何度も失敗しましたが、私は強くなりました
たとえ生命力が重傷であっても、私たちは努力し続けなければなりません
環境の要件のため。会社の規模に関係なく、導入とトラブルシューティング、RD は運用と保守作業の少なくとも半分を引き受けることができる必要があります
そして、私はまだ PHP 運用環境を開発していない人が使用しているのを見たことがあります。ウィンドウズ
テストの結果、php7 はこの問題を解決できますが、php7 は正式にリリースされていません。他にバグがあるかどうかはわかりません。
php
テストの結果、php7 はこの問題を解決できることがわかりましたが、php7 は正式にリリースされていません。他にバグがあるかどうかはわかりません。
皆さん、ありがとうございます、ありがとう
ごめんなさい、私が間違っていました。私のクラスメイトは CentOS5.4、64 ビットを使用しています