質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FileMaker

FileMaker(ファイルメーカー)は、ファイルメーカー社が開発しているデータベース構築ソフトウェアです。

Q&A

解決済

1回答

1673閲覧

POSTの値は、インスタンスでNullになるのでしょうか?

smileheart

総合スコア17

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FileMaker

FileMaker(ファイルメーカー)は、ファイルメーカー社が開発しているデータベース構築ソフトウェアです。

0グッド

0クリップ

投稿2018/08/15 23:35

編集2018/08/16 01:01

PHPを学び始めた初心者です。

合わせて、
Filemaker API for PHP 16 を習得したく試行錯誤しています。
https://fmhelp.filemaker.com/docs/16/ja/fms16_cwp_guide.pdf

これは、ご存知ない方も多いと思いますが、
PHPをよくご存知な方には、簡単な内容だと聞いています。

Filemakerというのは、アクセスと似た DBになり、
WEBからこのFileMakerにアクセスをしたいと考えています。

今回、つまずいているのは、
WEBから、ログインアカウントを作る処理がうまく行かずに困っています。

以下の様に記述しました。

コメントの「//存在していないと、アカウントを作成」が実行されません。
「//セッション開始」これも、実行できているか不明です。

個人的には、POSTされた値が、インスタンスで使われた事で書き換わって、
Nullになっているのではないかと思っています。
PHPとは、その様なものなのでしょうか?

よろしくします。

PHP

1<?php 2header('Content-Type: text/html; charset=UTF-8'); 3 4//Filemaker APIの呼び出しと、FileMakerの接続 5require_once('FileMaker.php'); 6require_once('server.php'); 7 8//入力されたアカウントを、FileMakerに照会 9$user = $_POST['account_name']; 10$post_user = '=='.str_replace('*','',$user); 11$pass = md5($_POST['pass']); 12 13$find =& $fm->newFindCommand('account'); 14$find->addFindCriterion('account_name',$post_user); 15$find->addFindCriterion('pass',$pass); 16$result = $find->execute(); 17 18//入力されたアカウントが既に存在しているか否かの確認 19if(FileMaker::isError($result)){ 20 //存在していないと、アカウントを作成 21 $add =& $fm->newAddcommand('account'); 22 $add->setField('account_name',$post_user); 23 $add->setField('pass',$pass); 24 $result= $add->execute(); 25 26 //セッション開始 27 session_start(); 28 $_SESSION['USERID'] = session_regenerate_id(TRUE); 29 $_SESSION['username'] = $user; 30 31 header('Location:index.php'); 32 33 34 //存在していないと、ログイン画面に遷移 35 } 36 else{ 37 echo 'すでに登録済みです。戻ってログインしてください。 38 <a href="loginform.html">戻る</a>'; 39 exit; 40 } 41

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/08/16 00:31

質問編集画面タイトル横にある「初心者アイコン」をご活用ください。「初心者」と質問で書くよりも伝わりますし、質問一覧に表示されるのでわかりやすくなります。
smileheart

2018/08/16 00:34

そのアイコンが見当たりません。どこにあるのでしょうか?
m.ts10806

2018/08/16 00:42

質問編集画面 の 質問タイトル 入力欄 の左側です。車に貼るような初心者マークのアイコンがあるはずなのでクリックしてください
smileheart

2018/08/16 00:47

わかりました!ありがとうございます!グレーだったので、目に止まりませんでした。。今、クリックしました。
m.ts10806

2018/08/16 00:55

質問編集画面で質問内容を保存しないと反映されませんよ。
smileheart

2018/08/16 00:58

保存とは、更新ボタンですよね? 押しましたが、どうですか?
smileheart

2018/08/16 01:02

コメントが必要だったようですね、今、処理できたと思います。
m.ts10806

2018/08/16 01:33 編集

初心者アイコン対応ありがとうございました。質問はあくまで要件のみされた方が良いので、こういった機能は活用していただければと思います。さて、FileMaker::isError()ってエラーが発生しているかどうかの判定だと思うのですが、「検索結果0件ヒット」は正常な情報なのでisError()でとれないのではないでしょうか。マニュアルは確認されましたか?
smileheart

2018/08/16 01:37

この段階で、$userや$passは、値を持っていないのでしょうか?イメージとしては、アカウントがないと判断された場合、その$userや$passを使って、FileMaker側にデータを作れると考えていました。
m.ts10806

2018/08/16 01:40

いえ、「アカウントがない」は「データが存在しなかった」ですが、それは「検索の結果0件だった」だけであり正確にはエラーではないからisErrorでは拾えないのでは?ということを聞いています。
smileheart

2018/08/16 01:45

なるほど、そうすると、エラーというコメントが間違っていて、FileMaker側にデーターがないという意味でよく、処理としては合っていると思います。elseには、うまく遷移できています。
m.ts10806

2018/08/16 02:10

データが存在しないときの$resultをvar_dump()で出力した結果を質問本文に追記していただけますか?
smileheart

2018/08/16 02:48

それは、どの様にすればいいのでしょうか?
m.ts10806

2018/08/16 02:50

せめてvar_dump()が何者かくらいは調べましょう。デバッグ時には必須の関数です。
smileheart

2018/08/16 02:51

わかりました。調べてみます。
smileheart

2018/08/16 06:15

string(4) "kawa" string(6) "==kawa" string(32) "a7e1d23834d620db534025585a19fce1" この様になりました!
smileheart

2018/08/16 06:15

いろいろ、自分で調べていると、解決できました。ありがとうござます!
guest

回答1

0

自己解決

var_dump で変数の状態を調べてみると、nullになっていないことがわかりました。

また、
「「//存在していないと、アカウントを作成」が実行されません。」
これも実際は、実行されている事がわかりました。

確認するサイトを間違っていて、基本的なミスです。

ご回答を頂いた方々には感謝です。

ありがとうござます。

投稿2018/08/16 06:18

smileheart

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/08/16 07:00

今回のようにデバッグをする癖をつけると理解も深まりますし解決も早くなりますよ。
smileheart

2018/08/16 07:01

そうですね!ありがとうござます(^^)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問