Support Forum fb-1848993692019106
translate このフォーラムは日本語でも利用できます。ログインして、言語設定を変更してください。
Forum Replies Created
-
AuthorPosts
-
fb-1848993692019106Participant
連絡が遅くなりました。
貴重なご指導、ありがとうございました。Googleログインで試みた際、そのメールアドレスがある事情により、すでにDBのUsermetaテーブルに登録ずみでした。これを削除したところ、ユーザー情報を取るのに成功して、DB無事格納されました。ありがとうございます!!!!
>gianismはいくつか重複チェックがあって、同じメアドで別々のアカウントを登録することができません。
たとえば、Googleとツイッターのユーザー名やアドレスが同じだと、ログインできなくなります。<いくつかの重複チェックについては、上記に記されたもの以外もあるようですが、全容をご教示いただけますか? ファイルのどの部分に記載されているか、教えていただければこちらで把握することも可能です。と言いますのも、当方のサイトは、最初にTwitterログインを実装し、今回Googleログインを実装するため、ユーザーに「TwitterログインとGoogleログインの切り替え、相互利用のような」仕組みの提供を予定しております関係から、正確な情報が必要ですので・・・。
fb-1848993692019106Participantご連絡、ありがとうございます。お問い合わせの件ですが—-、
こちらでGoogleログインを行うと、最初の部分でユーザー情報がとれていません。
$userinfo = wp_get_current_user();
echo “userinfo”;
var_dump($userinfo);
で見ると、値がカラになります。ただし、そちらからGoogleログインに成功したという報告がありましたが、DBのUSERSのテーブルにも、そちらの情報が入っていました。
同じ事をやっているのに、こちらからログインできず、そちらからはログインできる。こちらからのログインを妨げている何かがあるのでしょうか?
因みに、こちらからのログインは、以下2つのURLからです。
1)http://onlinelanguage.info/
2)http://onlinelanguage.info/tutorどうぞよろしくお願いいたします。
fb-1848993692019106Participantお世話になります。
>そもそもユーザー登録ができていない
ユーザーは登録できるが、カスタマイズ内容が適用されない
どちらでしょうか?<DBのUSERSのテーブルに登録されないので、ユーザー登録ができない、と判断した(過去の質問でその都度申し上げている)のですが、この判断はまちがいですか? まちがいだとすると、ユーザー登録ができている、できていない、を確認するには、どうすればいいのでしょうか?
>Gianismでは、SNSログインに失敗した場合、エラーメッセージが表示されます。そちらのメッセージによって、Google APIの設定がうまくいっていないのかなどがわかります。まず、そのメッセージは表示されますでしょうか?<
表示されませんが、Googleログイン ですので、SNSログインとは違うのでは?
以下、Redirect URLに書いてあるプログラムを送りますが、分かりにくいと思いますよ。
<?php
/*————————————————————————————-
なぜかwp_redirectが使えなくなったので、下記のようにすべて変更(2017_04_06)
//wp_redirect(‘http://onlinelanguage.info/wp-admin/users.php’);
echo ‘window.location.href = “http://onlinelanguage.info/wp-admin/users.php”;’;twitterログインを使うと初めてログインする時点でDBに「newcommer」として登録される。
「newcommer」以外(デフォルトのタイプを除く)はその会員タイプで開くページを自動振り分けできるが、「newcommer」は生徒目的なのか、講師目的なのかを判別できない。遷移してきたページから自動でDBのuser_metaに登録して、その目的にあったページへ遷移させる
このプログラムはhttp://onlinelanguage.info/bunki(旧 http://onlinelanguage.info/?page_id=980)(Gianismのfunction.phpによってログインすると最初に開くページ)に置いている
—————————————————————————————–*//*——————————————————————————
事前に必要な情報を取得、生成
——————————————————————————*/
//ログインしたユーザーの情報を調べる
$userinfo = wp_get_current_user( );
/*
echo “userinfo"; var_dump($userinfo); */ //echo $userinfo->roles[0]; //twitter $twitterurl = $userinfo->user_url; //echo $twitterurl.'<br>'; //echo $userinfo->ID."<br>"; //twitter_id /* global $wpdb; $result_twitterid = get_user_meta( $userinfo->ID , '_wpg_twitter_id' , true ); echo "result_twitterid".$result_twitterid; */ //username $username = $userinfo->user_login; //echo $username; //dbにある会員タイプを2つのグループ(生徒のGと講師のG)に分けた配列を生成---- global $wpdb; //var_dump($wpdb); $result = array_keys(get_option( 'wp5_user_roles' ));//Administratorではなく、administratorなどの表記を得るため「キー」を使う /* echo "
result"; var_dump($result); */ foreach($result as $item){ if($item == 'administrator' || $item == 'editor' || $item == 'author' || $item == 'contributor' || $item == 'subscriber'){ continue; } if($item == 'newcommer' || $item == 't_direct' || $item == 't_via_web'){ continue; }//生徒のG------------------------------------------------- $student_g[] = $item; } unset($item); /* echo "
student_g"; var_dump($student_g); */ foreach($result as $item){ if($item == 'administrator' || $item == 'editor' || $item == 'author' || $item == 'contributor' || $item == 'subscriber'){ continue; } if($item == 'newcommer' || $item == 's_direct' || $item == 's_via_web' || $item == 's_hohjin_via_web'){ continue; }//講師のG--------------------------------------------------- $tutor_g[] = $item; } unset($item); /* echo "
tutor_g"; var_dump($tutor_g); */ //--------------------------------------------事前に必要な情報を取得、生成終わり--- /*------------------------------------------------------------------------------ bunki.phpのGianism3.0.3のtwitterサインインで同一人物が2つの会員登録をしてしまう部分を 解消するため、下のincを呼び込む(2017_04_01) -------------------------------------------------------------------------------*/ include_once (TEMPLATEPATH .'/withnet/add_kanrigamen/sign_in_bunki/bunki_addition.inc'); /* echo "bunki_addition.incの直下<br>"; return; */ /*-------------------------------------------------------------------------------------- twitterでAccount suspendedなど「不正使用」が疑われているアカウントをチェックする なぜかエラーになってしまうので、2016_01_29に以下適用を停止した --------------------------------------------------------------------------------------*/ //f_twitter_check.incの中でapiで使うためusername(38Lで読み込んだ)の頭の@を削除する $username = substr( $username , 1 , strlen($username)-1 ); //$username = 'MossingK';//suspended. //include (TEMPLATEPATH .'/withnet/add_kanrigamen/f_twitter_check.inc'); /* echo "
temp_check"; var_dump($temp_check); return; */ //上でwpにログインしているユーザーの全情報を読みこむ。読み込めない場合=["errors"]になった場合はエラーメッセージを表示して停止する //尚、表示されるリンク先は想定されるエラーの中で最多であろうsuspendedを指定した。変更可 /* if(!empty($temp_check["errors"])){ echo "twitter says below.<br>"; echo $temp_check["errors"][0]["message"]."<br>"; ?> click here <?php return; } */ /*-------------------------------------------------------------------------------------- $_COOKIE["shiteiurl"]をアフィリィエイトに対応できるよう加工する???? --------------------------------------------------------------------------------------*/ $shiteiurl = $_COOKIE["shiteiurl"]; /*----------------------------------------------------------------------------------------- ページURLの変更に伴い、以下も変更(2017_04_26) if(strpos($shiteiurl,'http://onlinelanguage.info/?page_id=1204') === false){ }else { $shiteiurl = substr( $shiteiurl , 0 , 40 );//http://onlinelanguage.info/?page_id=1204だけ } -----------------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------------- 不要のようなので使わない if(strpos($shiteiurl,'http://onlinelanguage.info/tutor') === false){ }else { $shiteiurl = substr( $shiteiurl , 0 , 32 );//http://onlinelanguage.info/tutorだけ余計な部分を削除 } -----------------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------------- functions.phpにクッキーを読み込ませる仕掛けをして、サインイン前のページをクッキーで保存している。 会員タイプが「newcommer」の場合の処理 1)は2016_11_18に変更 1)法人テーブルにあるURL(専用ページ)から遷移の場合はログインユーザのusermetaテーブルの会員タイプは「s_hohjin_via_web」にして、同時にusermetaテーブルに「法人名」を追加する 注意! 法人テーブルにあるURL(専用ページ)を作る際や法人会員登録情報変更ページで、法人テーブルでNLへの利用登録(テーブルの値がデフォルトで"N")なのかQHへの利用登録("Q")なのか、すべて利用可能なのか("ALL")を登録ずみなので、その値によって分岐遷移させる 2)は2016_11_18に変更 注意!! http://onlinelanguage.info/page_id5499他の「他」の部分は不要か? 検証が必要!! ------------------------------------------TEST-------------------------------------------- 2)1)以外でhttp://onlinelanguage.info/page_id5499他(個人の生徒用サインインページ他。手動で追加)からの遷移は A)Quick Help!の個人向けサインインページ(http://onlinelanguage.info/page_id6205)以外はテーブルusermetaの該当IDに"riyoh_sirvice"に"N"を追加して、"wp5_capabilities"を「s_via_web」とし、NATIVE LESSONの指定のページへ遷移するよう分岐させる ----------------------------------------TEST-------------------------------------------------------- 注意! 将来はhttp://onlinelanguage.info/page_id5499だけ残して、他はサインインさせなくすべし B)Quick Help!の個人向けサインインページ(http://onlinelanguage.info/page_id6205)はテーブルusermetaの該当IDに"riyoh_sirvice"=>"Q"を追加して、"wp5_capabilities"を「s_via_web」とし、Quick Help!の指定のページへ遷移するよう分岐させる 3)1)以外でhttp://onlinelanguage.info/tutor他(講師用サインインページとアフィリィエイトページ。手動で追加)からの遷移は「t_via_web」とする。 それ以外はサインインさせない -----------------------------------------------------------------------------------------*/ if($userinfo->roles[0] == 'newcommer'){//----------------------------------------------------------- //echo "あなたはnewcommerです<br>"; ////法人会員のチェックのためDBから法人会員の情報を読み込む global $wpdb; $wpdb->show_errors(); $guid_temp = $wpdb->get_results(" SELECT guid,hohjinmei,riyoh_sirvice FROM $wpdb->hohjin "); $wpdb->flush(); $guid_temp = json_decode(json_encode($guid_temp), true); foreach($guid_temp as $item){ if(!empty($item["guid"])){ $tempdayo = "http://onlinelanguage.info/".$item["hohjinmei"]."様専用ページ"; $guid[] = $tempdayo; } } unset($item); /* echo "
guid"; var_dump($guid); echo $shiteiurl; echo $_COOKIE["shiteiurl"]; $message_to_kanrisya = urldecode($_COOKIE["shiteiurl"]); wp_mail('withnetdes@gmail.com', 'クッキーの値', $message_to_kanrisya); */ //1)の処理----------------------------------------------------------- //法人専用URLの最後を日本語にしているのでurlencode、urldecodeが必要になってしまった if(in_array(urldecode($_COOKIE["shiteiurl"]),$guid)){//--------------------------------------------- //echo $_COOKIE["shiteiurl"]."<br>"; global $wpdb; $wpdb->show_errors(); $hohjinmei_temp = $wpdb->get_results($wpdb->prepare(" SELECT hohjinmei,riyoh_sirvice FROM $wpdb->hohjin WHERE guid = %s ",urldecode($_COOKIE["shiteiurl"]))); $wpdb->flush(); $hohjinmei_temp = json_decode(json_encode($hohjinmei_temp), true); /* echo "
hohjinmei_temp"; var_dump($hohjinmei_temp); */ $kaiintype = array('s_hohjin_via_web'=>TRUE); $hohjinmei = $hohjinmei_temp[0]["hohjinmei"]; update_user_meta( $userinfo->ID , 'wp5_capabilities' , $kaiintype ); update_user_meta( $userinfo->ID , 'hohjinmei' , $hohjinmei ); /*------------------------------------------------------------------------------ 法人テーブルにある"riyoh_sirvice"の値によって遷移させる -------------------------------------------------------------------------------*/ if($hohjinmei_temp[0]["riyoh_sirvice"] == "Q"){ echo 'window.location.href = "http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-item-95d4079de9d17e48b25e19a80fa848f3";'; //Quick Help!の指定のページ(設定の確認) exit; }else if($hohjinmei_temp[0]["riyoh_sirvice"] == "N"){ echo 'window.location.href = "http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-ea8fb660fbc99b41416e8462c79e8196";';//NATIVE LESSONの使い方 exit; }else if($hohjinmei_temp[0]["riyoh_sirvice"] == "ALL"){ ?> $(function () { // プルダウン変更時に遷移 $('select[name=pulldown1]').change(function() { if ($(this).val() != '') { window.location.href = $(this).val(); } }); }); NATIVE LESSONのページを開きますか? Quick Help!のページを開きますか?<BR> [googleapps domain="docs" dir="presentation/d/e/2PACX-1vSaHEOldNyBX7evFTwLcEEm6u7WSH1ee0nZUch11aqsI94b6wzLxxh7j6XQoa0CG-0hWNAw5lLvcijf/embed" query="start=false&loop=false&delayms=3000" width="480" height="299" /]<br> <!--プルダウン変更時--> <select name="pulldown1"> <option value="">利用するサービスを選択してください</option> <option value="http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-ea8fb660fbc99b41416e8462c79e8196">NATIVE LESSON</option> <option value="http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-item-95d4079de9d17e48b25e19a80fa848f3">Quick Help!</option> </select> <?php exit; } }//--------------------if(in_array($_COOKIE["shiteiurl"],$guid))-------------------------- //2)のA)の処理-------------------------------------------------------- else if($_COOKIE["shiteiurl"] == "http://onlinelanguage.info/page_id5499" or $_COOKIE["shiteiurl"] == "http://onlinelanguage.info/page_id1193" or $_COOKIE["shiteiurl"] == "http://onlinelanguage.info/page_id19" or $_COOKIE["shiteiurl"] == "http://onlinelanguage.info/page_id1186"){//手動で追加------------------------------------------------------------------------------------------ //法人会員なのに「個人用サインインページ」から入った人に警告するため、add_kanrigamen/student/s_via_web/s_point_zandaka_bunki.incのポイント数表示部分に「そういう人はお問い合わせください」と追加した //ログインユーザーの情報を追加 update_user_meta( $userinfo->ID , 'riyoh_sirvice' , 'N' ); $kaiintype = array('s_via_web'=>TRUE); update_user_meta( $userinfo->ID , 'wp5_capabilities' , $kaiintype ); echo 'window.location.href = "http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-ea8fb660fbc99b41416e8462c79e8196";';//NATIVE LESSONの使い方 exit; }//--------------------------------------------------------------------------------------- //2)のB)の処理-------------------------------------------------------- else if($_COOKIE["shiteiurl"] == "http://onlinelanguage.info/page_id6205"){//----------- //法人会員なのに「個人用サインインページ」から入った人に警告するため、add_kanrigamen/student/s_via_web/s_point_zandaka_bunki.incのポイント数表示部分に「そういう人はお問い合わせください」と追加した //ログインユーザーの情報を追加 update_user_meta( $userinfo->ID , 'riyoh_sirvice' , 'Q' ); $kaiintype = array('s_via_web'=>TRUE); update_user_meta( $userinfo->ID , 'wp5_capabilities' , $kaiintype ); echo 'window.location.href = "http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-item-95d4079de9d17e48b25e19a80fa848f3";'; //Quick Help!の指定のページ(設定の確認) exit; }//--------------------------------------------------------------------------------------- //3)の処理------------------------------------------------------------- else if($_COOKIE["shiteiurl"] == "http://onlinelanguage.info/tutor" or $_COOKIE["shiteiurl"] == "http://onlinelanguage.info/tutor?affiliates=42" or $_COOKIE["shiteiurl"] == "http://onlinelanguage.info/tutor?affiliates=1560" or $_COOKIE["shiteiurl"] == "http://onlinelanguage.info/tutor?affiliates=1573" or $_COOKIE["shiteiurl"] == "http://onlinelanguage.info/tutor?affiliates=1575"){//手動で追加------------------------------------------------------ /* affiliates=42=@online_tutorjob 1560=@love_duong(スアン) 1573=@ngocvyfuuko(ヴィ) 1575=@justfebz */ $kaiintype = array('t_via_web'=>TRUE); $update_wp5_capabilities = update_user_meta( $userinfo->ID , 'wp5_capabilities' , $kaiintype ); echo 'window.location.href = "http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-9490f588034862b414fe92896f99ab22";';//Get Started exit; }//------------------------------------------------------------------------------------- //それ以外はサインインさせない----------------------------------------- else {//--------------------------------------------------------------------------------- echo 'window.location.href = "http://onlinelanguage.info/";'; } }//newcommerの処理の終わり if($userinfo->roles[0] == 'newcommer')----------------------------------- /*---------------------------------------------------------------------------------------- 2016_11_18に変更 会員タイプがnewcommer以外場合、 A)$student_gであれば あ)法人専用サインインページ経由の場合は、以下の法人テーブルのriyoh_sirviceの値によって分岐遷移させる あ-1)riyoh_sirviceが"N"の場合は、NATIVE LESSONの最初に開くページへ遷移 あ-2)riyoh_sirviceが"Q"の場合は、Quick Help!の最初に開くページへ遷移 あ-3)riyoh_sirviceが"ALL"の場合は、遷移ページを選択させる い)あ)でない場合は個人なので、usermetaテーブルのriyoh_sirviceの値によって分岐遷移させる 法人会員で間違えて個人ページからサインインした場合の処理を追加 い-1)riyoh_sirviceが"N"の場合は、NATIVE LESSONの最初に開くページへ遷移 い-2)riyoh_sirviceが"Q"の場合は、Quick Help!の最初に開くページへ遷移 い-3)riyoh_sirviceが"ALL"の場合は、遷移ページを選択させる B)$tutor_gであれば 指定のページへ遷移 C)A)B)以外であれば 会員タイプに応じて開くページを指定 ----------------------------------------------------------------------------------------*/ else if(in_array($userinfo->roles[0],$student_g)){//------------------------------------------------ $shiteiurl = $_COOKIE["shiteiurl"]; /* echo $_COOKIE["shiteiurl"]; echo "<br>koko<br>"; */ //法人会員のチェックのためDBから法人会員の情報を読み込む global $wpdb; $wpdb->show_errors(); $guid_temp = $wpdb->get_results(" SELECT guid,hohjinmei,riyoh_sirvice FROM $wpdb->hohjin "); $wpdb->flush(); $guid_temp = json_decode(json_encode($guid_temp), true); /* echo "
guid_temp"; var_dump($guid_temp); */ foreach($guid_temp as $item){ if(!empty($item["guid"])){ $tempdayo = "http://onlinelanguage.info/".$item["hohjinmei"]."様専用ページ"; $guid[] = $tempdayo; } } unset($item); /* echo "
guid"; var_dump($guid); echo urldecode($shiteiurl)."<br>"; echo urldecode($_COOKIE["shiteiurl"])."<br>"; return; */ //OK //A-あ)の処理--------------------------------------------------------- if(in_array(urldecode($_COOKIE["shiteiurl"]),$guid)){//--------------------------------------------- //echo $_COOKIE["shiteiurl"]."<br>"; //遷移元の法人専用URLからその法人の"riyoh_sirvice"の値を特定する foreach($guid_temp as $item){ $tempdayo = "http://onlinelanguage.info/".$item["hohjinmei"]."様専用ページ"; if($tempdayo != urldecode($_COOKIE["shiteiurl"])){ continue; } $riyoh_sirvice = $item["riyoh_sirvice"]; } /*------------------------------------------------------------------------------ 法人テーブルにある"riyoh_sirvice"の値によって遷移させる -------------------------------------------------------------------------------*/ if($riyoh_sirvice == "Q"){ echo 'window.location.href = "http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-item-95d4079de9d17e48b25e19a80fa848f3";'; //Quick Help!の指定のページ(設定の確認) exit; }else if($riyoh_sirvice == "N"){ echo 'window.location.href = "http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-ea8fb660fbc99b41416e8462c79e8196";';//NATIVE LESSONの使い方 exit; }else if($riyoh_sirvice == "ALL"){ ?> $(function () { // プルダウン変更時に遷移 $('select[name=pulldown1]').change(function() { if ($(this).val() != '') { window.location.href = $(this).val(); } }); }); NATIVE LESSONのページを開きますか? Quick Help!のページを開きますか?<BR> [googleapps domain="docs" dir="presentation/d/e/2PACX-1vSaHEOldNyBX7evFTwLcEEm6u7WSH1ee0nZUch11aqsI94b6wzLxxh7j6XQoa0CG-0hWNAw5lLvcijf/embed" query="start=false&loop=false&delayms=3000" width="480" height="299" /]<br> <!--プルダウン変更時--> <select name="pulldown1"> <option value="">利用するサービスを選択してください</option> <option value="http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-ea8fb660fbc99b41416e8462c79e8196">NATIVE LESSON</option> <option value="http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-item-95d4079de9d17e48b25e19a80fa848f3">Quick Help!</option> </select> <?php exit; } }//---------if(in_array(urldecode($_COOKIE["shiteiurl"]),$guid))------------------------------------- //A)-い)の処理-------------------------------------------------------- else{//----------------------------------------------------------------------------------- //ログインユーザーのusermetaテーブルのriyoh_sirviceの値を読み込む global $wpdb; $riyoh_sirvice = get_user_meta( $userinfo->ID , 'riyoh_sirvice' , true ); //echo "<br>koko".$riyoh_sirvice."<br>"; //riyoh_sirviceの値がない場合は、法人会員で間違えて個人ページからサインインしたので、その法人のriyoh_sirviceの値を入れる if(empty($riyoh_sirvice)){//---------------------- ////ログインユーザーのusermetaテーブルの法人名を読み込む global $wpdb; $hohjinmei = get_user_meta( $userinfo->ID , 'hohjinmei' , true ); //unset($hohjinmei); /*------------------------------------------------------------------------------ $hohjinmeiがない(空)の場合は、個人会員で利用者登録がないことになるので? 念のため、以下のエラー処理を実行する-----------------------------------------------TEST------------- --------------------------------------------------------------------------------*/ if(empty($hohjinmei)){ //管理者にメールで知らせる $message = $userinfo->user_login."会員種は".$userinfo->roles[0]."がログインのためbunki_phpを呼び出しましたが、利用サービスの登録がなかったため両方使用できる処置を臨時にとりました。対処も必要です。このメールの出力元は/ol/wp-content/themes/groovy/withnet/add_kanrigamen/sign_in_bunki/bunki.phpです。"; wp_mail('withnetdes@gmail.com', '個人会員にbunki_phpで臨時の処理をしました', $message); ?> $(function () { // プルダウン変更時に遷移 $('select[name=pulldown1]').change(function() { if ($(this).val() != '') { window.location.href = $(this).val(); } }); }); NATIVE LESSONのページを開きますか? Quick Help!のページを開きますか?<BR> [googleapps domain="docs" dir="presentation/d/e/2PACX-1vSaHEOldNyBX7evFTwLcEEm6u7WSH1ee0nZUch11aqsI94b6wzLxxh7j6XQoa0CG-0hWNAw5lLvcijf/embed" query="start=false&loop=false&delayms=3000" width="480" height="299" /]<br> <!--プルダウン変更時--> <select name="pulldown1"> <option value="">利用するサービスを選択してください</option> <option value="http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-ea8fb660fbc99b41416e8462c79e8196">NATIVE LESSON</option> <option value="http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-item-95d4079de9d17e48b25e19a80fa848f3">Quick Help!</option> </select> <?php exit; } ////法人名からその法人のriyoh_sirviceを特定する foreach($guid_temp as $item){ if($item["hohjinmei"] != $hohjinmei){ continue; } $riyoh_sirvice = $item["riyoh_sirvice"]; } //echo "kokodayo".$riyoh_sirvice."<br>"; }//----------------------------------------------- //$riyoh_sirviceの値によって遷移 if($riyoh_sirvice == "Q"){ echo 'window.location.href = "http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-item-95d4079de9d17e48b25e19a80fa848f3";'; //Quick Help!の指定のページ(設定の確認) exit; }else if($riyoh_sirvice == "N"){ echo 'window.location.href = "http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-ea8fb660fbc99b41416e8462c79e8196";';//NATIVE LESSONの使い方 exit; }else if($riyoh_sirvice == "ALL"){ ?> $(function () { // プルダウン変更時に遷移 $('select[name=pulldown1]').change(function() { if ($(this).val() != '') { window.location.href = $(this).val(); } }); }); NATIVE LESSONのページを開きますか? Quick Help!のページを開きますか?<BR> [googleapps domain="docs" dir="presentation/d/e/2PACX-1vSaHEOldNyBX7evFTwLcEEm6u7WSH1ee0nZUch11aqsI94b6wzLxxh7j6XQoa0CG-0hWNAw5lLvcijf/embed" query="start=false&loop=false&delayms=3000" width="480" height="299" /]<br> <!--プルダウン変更時--> <select name="pulldown1"> <option value="">利用するサービスを選択してください</option> <option value="http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-ea8fb660fbc99b41416e8462c79e8196">NATIVE LESSON</option> <option value="http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-item-95d4079de9d17e48b25e19a80fa848f3">Quick Help!</option> </select> <?php exit; }else if(empty($riyoh_sirvice)){ //echo "koko_nashi<br>"; //管理者にメールで知らせる $message = $userinfo->user_login."会員種は".$userinfo->roles[0]."がログインのためbunki_phpを呼び出しましたが、法人会員「".$hohjinmei."」で利用サービスの登録がなかったため両方使用できる処置を臨時にとりました。対処も必要です。このメールの出力元は/ol/wp-content/themes/groovy/withnet/add_kanrigamen/sign_in_bunki/bunki.phpです。"; wp_mail('withnetdes@gmail.com', '法人会員にbunki_phpで臨時の処理をしました', $message); ?> $(function () { // プルダウン変更時に遷移 $('select[name=pulldown1]').change(function() { if ($(this).val() != '') { window.location.href = $(this).val(); } }); }); NATIVE LESSONのページを開きますか? Quick Help!のページを開きますか?<BR> [googleapps domain="docs" dir="presentation/d/e/2PACX-1vSaHEOldNyBX7evFTwLcEEm6u7WSH1ee0nZUch11aqsI94b6wzLxxh7j6XQoa0CG-0hWNAw5lLvcijf/embed" query="start=false&loop=false&delayms=3000" width="480" height="299" /]<br> <!--プルダウン変更時--> <select name="pulldown1"> <option value="">利用するサービスを選択してください</option> <option value="http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-ea8fb660fbc99b41416e8462c79e8196">NATIVE LESSON</option> <option value="http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-item-95d4079de9d17e48b25e19a80fa848f3">Quick Help!</option> </select> <?php exit; } }//----------if(in_array($_COOKIE["shiteiurl"],$guid))の続き------------------------------ }//----------else if(in_array($userinfo->roles[0],$student_g))-------------------------------------- //B)の処理----------------------------------------------------------- else if(in_array($userinfo->roles[0],$tutor_g)){//-------------------------------------------------- /* echo "tutor_group<br>"; echo $_COOKIE["shiteiurl"]."<br>"; echo $shiteiurl."<br>"; return; */ //loginfailed.phpからの遷移は以下。$_SESSION["PHPSESSID"]はloginfailed.phpが開いた場合のみに生成 if(!empty($_SESSION["PHPSESSID"])){//------------------------------------------- if( $_COOKIE["PHPSESSID"] == $_SESSION["PHPSESSID"] ){ /* echo "kokodayo上<br>"; echo $_SESSION["shiteiurl_next"]; return; */ ?> window.location.href = ""; <?php exit; }else{ //エラー処理 echo "Please contact to withnetdes@gmail.com<br>"; $message = $userinfo->user_login."のログイン失敗画面からのログインでエラー発生です。ただし、問題の特定と修復は困難だと思いますので、これに関連するメール送信に注意、対応してください。このメールの発信元は、/ol/wp-content/themes/groovy/withnet/add_kanrigamen/sign_in_bunki/bunki.phpです。"; wp_mail('withnetdes@gmail.com', 'bunk.phpの処理でエラー発生', $message); return; } }//----------------------------------------------------------------------------- //以下はhttp://onlinelanguage.info/tutorからログインできた /*---------------------------------------------------------------------------------------- 不要でOKみたい $shiteiurl_2 = str_replace("http://onlinelanguage.info/wp-login.php?redirect_to=", "", $shiteiurl); $shiteiurl_3 = str_replace("&reauth=1", "", $shiteiurl_2); $shiteiurl_4 = urldecode($shiteiurl_3); if (strpos($shiteiurl_4, 'wp-admin') !== false) {//$shiteiurl_4にwp-admin/admin.php?page=・・・などがあれば echo 'window.location.href = shiteiurl_4;'; return; exit; }else{//$shiteiurl_4がhttp://onlinelanguage.info/?page_id=1204などのurlであれば ------------------------------------------------------------------------------------------*/ //echo "kokodayo<br>"; echo 'window.location.href = "http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-9490f588034862b414fe92896f99ab22";'; //Get_started exit; //} //bit.ly/2b2R5Hvなどの指定のページはそのまま開けている }//--------else if(in_array($userinfo->roles[0],$tutor_g))------------------------------------------ //C)の処理------------------------------------------------------------ else if($userinfo->roles[0] == 'administrator'){//-------------------------------------------------- echo 'window.location.href = "http://onlinelanguage.info/wp-admin/users.php";'; exit; //関係者打ち合わせ用 }else if($userinfo->roles[0] == 'subscriber'){//---------------------------------------------------- echo 'window.location.href = "http://onlinelanguage.info/wp-admin/admin.php?page=framed-menu-8a46c3ae9de5602e1f714fa46e35857f";'; exit; }else {//------------------------------------------------------------------------------------------- /* echo 'Sign inできない会員タイプです<br>'; echo $username."username<br>"; echo $userinfo->roles[0]."userinfo->roles[0]<br>"; */ //Googleログインではこの分岐に入ってしまう echo "何か変ですね。withnetdes@gmail.comまでお問い合わせください。<br>"; }//------------------------------------------------------------------------------------------------- edit_post_link( ); ?> ☆上記で読み込んでいる、incファイルは以下 <?php /*-------------------------------------------------------------------------------------------------- Googleログインについては、仮対応 --------------------------------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------------------- bunki.phpのGianism3.0.3のtwitterサインインで同一人物が2つの会員登録をしてしまう部分を 解消する(2017_04_01) ログインした人がすでに会員登録をすませているかどうかを調べる ----------------------------------------------------------------------------------------*/ //ログインしたユーザー名(@つき)$userinfo->display_name。呼び込み元のbunki.phpの$userinfo = wp_get_current_user( );より //echo $userinfo->display_name."userinfo->display_name<br>"; //$userinfo->display_name = "@quu"; //$userinfo->display_name = "@tutor_A2"; //既存の会員登録にユーザー名(@つき)があるか、どうかをusername_exists関数で調べる。username_exists関//数はusersテーブルのuser_loginの値を調べるので、newcommerとして新しく登録した人に対しては、user_logi//n abcd@pseudo.twitter.comusers の型式?の値を照合する。よって実質的には、既登録のみを対象としたこと//になる if ( username_exists( $userinfo->display_name ) ){ /*------------------------------------------------------------------------------ ログインした人がすでに会員登録を終えていた場合 ------------------------------------------------------------------------------*/ /* echo "
ログインした人"; var_dump($userinfo); echo "Username In Use!<br>"; echo "既存会員IDやuser_idは".username_exists( $userinfo->display_name )."<br>"; */ if($userinfo->ID == username_exists( $userinfo->display_name )){//-------- //何もしない。これがないと再度ログインした場合既存の登録を削除してしまうので } else{//------------------------------------------------------------------- //処理1 ログインユーザーの新規登録のusermetaテーブルの削除してはいけない部分(新しく追加されたもの)を同一既存のユーザーのusermetaテーブルに追加する //$userinfo->ID = 5103; $shinkideno_info = get_user_meta( $userinfo->ID , '' , false ); /* echo "
新規会員"; var_dump($shinkideno_info); */ //必要なもののみ選択して、既存の会員のusermetaに追加する add_user_meta(username_exists( $userinfo->display_name ), 'locale', $shinkideno_info[locale][0]); add_user_meta(username_exists( $userinfo->display_name ), '_wpg_twitter_id', $shinkideno_info[_wpg_twitter_id][0]); add_user_meta(username_exists( $userinfo->display_name ), '_wpg_twitter_screen_name', $shinkideno_info[_wpg_twitter_screen_name][0]); add_user_meta(username_exists( $userinfo->display_name ), '_wpg_unknown_password', $shinkideno_info[_wpg_unknown_password][0]); add_user_meta(username_exists( $userinfo->display_name ), 'session_tokens', $shinkideno_info[session_tokens][0]); //処理2 新規登録のusersテーブルのログインユーザーの該当行を削除し、usermetaも全部削除する require_once ABSPATH."/wp-admin/includes/user.php";//これがないと以下は使えない //http://plug-em.in/wordpress/function/wp_delete_user/ /* echo "削除するID".$userinfo->ID."<br>"; */ wp_delete_user( $userinfo->ID ); //処理3 ログインユーザーの情報を切り替える $userinfo = get_userdata( username_exists( $userinfo->display_name ) ); /* echo "
userinfo"; var_dump($userinfo); exit; */ }//------------------------------------------------------------------------ }else{ /*------------------------------------------------------------------------------ ログインした人が言葉通り?最初の会員登録であった場合 ------------------------------------------------------------------------------*/ //echo "Username Not In Use!<br>"; //下記についてusersテーブルの値をGianism1.0の型式に入れ替える //関数wp_update_userではuser_loginの値を変更できない $user_shinki = get_user_by( 'id', $userinfo->ID ); /* echo $user_shinki."user_shinki<br>"; echo $userInfo->id."userInfo->id<br>"; */ if(empty($user_shinki)){ echo "user_shinkiに値が入っていません<br>"; //Googleログインすると、この分岐に入ってしまう。 } $user_shinki_user_login = "@".str_replace("@pseudo.twitter.comusers","",$user_shinki->user_login); $user_shinki_user_nicename = str_replace("@pseudo.twitter.com","",$user_shinki->user_nicename); global $wpdb; $wpdb->show_errors(); $result = $wpdb->query( $wpdb->prepare(" UPDATE $wpdb->users SET user_login = %s , user_nicename = %s WHERE ID = %d ",$user_shinki_user_login,$user_shinki_user_nicename,$userinfo->ID)); }
fb-1848993692019106Participantご教示ありがとうございます。動画のようなページが出てこないので、まったくログインできていないのではないかと思います。以下症状を説明いたします。
1)ある固定ページに、if ( !is_user_logged_in() ) {
gianism_login();
}
を置いています(現状、ここに現在使っているtwitterログインが表示されています)。2)Giznism設定で「Google ログイン」をONにしました。すると、「twitterログイン」の横に「Google ログイン」が表示されました(「Google API Console」は設定ずみ)。
3)「Google ログイン」をクリックすると、Googleのアカウント選択画面が現れ、アカウントを選択すると「パスワード」の入力が求められます。「次へ」をクリックすると、 下で指定したredirect URLが表示されます。
4)redirect URLは、Giznismのfunctions.phpの中に、
function _my_redirect_to($url){
//これでリダイレクトURLが取得できます
//指定されていなければ$urlはNULLです。
//return home_url();
return ‘http://XXXXX/bunki’;
//return ‘http://XXXXX/firstreturn_gianism’;
}
// Add filter.
add_filter(‘gianism_redirect_to’, ‘_my_redirect_to’);5)私が書いたプログラムは、redirect URLにあります。twitterログインの際にある処理をするプログラムです(新規登録者がページAから入ったのであれば、カテゴリーAに入れる。既存の登録者にはその登録者が属するカテゴリーをDBから読み込んで、適切なページへ遷移させるなど)。このプログラムを送るのはやぶさかではないのですが、かえって問題を分かりにくくするような予感がいたします。
6)「twitterログイン」の場合は、1)から4)に遷移して、5)で適切に振り分けられています。ところが、Google ログインの場合(もちろんそれ用のプログラムを追加ずみ)は、1)から4)に遷移するのですが、worpressの関数のwp_get_current_user( )に、上記のプロセスを経ても何も書き込まれていません(DBのusersのテーブルに追加されない)。
上記より、1)から4)に遷移するが、その際Googleからの情報(アカウント名、メールアドレス)を受け取れないか、受け取っても何らかの原因で処理できない((DBのusersのテーブルに追加できない)ような印象がいたします。
ともあれ、まったくのお手上げ状態ですので、ご支援していただければ幸いです。
fb-1848993692019106Participantお手数をおかけいたしております。
ご指示の検証ですが、該当はやはりゼロでした。
SELECT * from wp5_usermeta
WHERE meta_key LIKE ‘%twitter%’結局、私のほうのプログラムを変更することにいたしました。
昨日から、ご相談に乗っていただいてたいへんありがとうございました。
fb-1848993692019106Participantお世話になります。
ご指示の通り、確認してみました。
SELECT * from wp_usermeta
WHERE meta_key LIKE ‘%twitter%’該当なしでした。因みに、user_id = 5103 ですと、
_wpg_twitter_id 153481xxxx
がありました。ただ上記の検索結果で気づいたのですが、他のカラムのmeta_keyがwp5_capabilitiesなどと「wp5_」と頭につく文字のものがいくつかあったのですが、twitterのidを表すカラムのmeta_keyは「_wpg_」が頭について、_wpg_twitter_id となっていました。他に2箇所(_wpg_twitter_screen_name,
_wpg_unknown_password)。これは変ではありませんか???以下、ご指摘につきましては下記の通りです。
Q)そもそもtwitterでログインできていたか。
A)できていました。Q)以前Gianism以外のプラグインでログインできていたのではないか。
A)Gianism1.0 で会員登録システムを作り、facebookにも対応させるため、Gianism2.2.7に変更し(この時点でphpを5.3→5.6)たのですが、パーマリンクの変更をしたくなかったので、Gianism3.0.3に再度変更(この時点でwordpressを3.8.3→4.7.3)。パーマリンクの変更は必須だと知ってついに変更いたしました。
会員登録システムはGianism以外は使ったことはございません。Q)現在データを調査しているサーバは本番で稼働しているか。
A)本番で稼働しています。以上です。どうぞよろしくお願いいたします。
fb-1848993692019106Participant面倒な件に丁寧に対応していただき、感謝しています。
ご相談のサイトは、会員に種類を設けているため、twitter認証?の後に遷移するページをGianismのfunctions.phpに以下のように指定しています。
function _my_redirect_to($url){
//これでリダイレクトURLが取得できます
//指定されていなければ$urlはNULLです。
//return home_url();
return ‘http://mydomain/bunki’;}
// Add filter.
add_filter(‘gianism_redirect_to’, ‘_my_redirect_to’);そして、http://mydomain/bunki で、
1)ログインユーザーの情報を $userinfo = wp_get_current_user( ); で入手して
2)「newcommer」であれば、条件(遷移元)によって会員種を決定し
3)user_metaテーブルに会員種を追加しする$kaiintype = array(‘t_via_web’=>TRUE);
$update_xyz_capabilities = update_user_meta( $userinfo->ID , ‘wp5_capabilities’ , $kaiintype );4)最後に会員種によって、遷移先を振り分けています
今回、一番最初のログインユーザーの情報取得($userinfo = wp_get_current_user( );)の段階で、同じtwitterアカウントの方が、二重に情報を持ってしまう(以下)ので困っている次第です。
Gianism3.0.3で登録(初回ログイン時会員登録)
user_id 5103
_wpg_twitter_id 153481xxxx (usermeta)
nickname @abcd (usermeta)
user_login abcd@pseudo.twitter.comusers (users)
user_nicename abcd@pseudo.twitter.com (users)Gianism1.0で登録(初回ログイン時会員登録)
user_id 1386
_wpg_twitter_id カラム、値 両方ともなし(usermeta,usersとも)
nickname @abcd (usermeta)
user_login @abcd (users)
user_nicename abcd (users)また、「twitterアカウントの接続を解除」のご指摘ですが、現在会員登録されている1000以上の方が、すべて
_wpg_twitter_idを持っていないため、そのような原因は考えられないと思います。最後になりましたが、1386のユーザーのユーザーメタは以下です。
上から
umeta_id
user_id
meta_key
meta_value(空白の場合はなし)25355
1386
jabber29429
1386
mother_tongue
Bingo20077
1386
admin_color
fresh20076
1386
comment_shortcuts
false20075
1386
rich_editing
true20074
1386
description20073
1386
nickname
@abcd20072
1386
last_name20071
1386
first_name20085
1386
tweet_by_kidoh
receive20082
1386
signup_ip
124.yyy.115.xxx20081
1386
wp5_user_level
020080
1386
wp5_capabilities
a:1:{s:9:”t_via_web”;b:1;}20079
1386
show_admin_bar_front
true20078
1386
use_ssl
020783
1386
namae
Nobu20784
1386
nationality
Indonesian25354
1386
yim25353
1386
aim25358
1386
appear_in_or_skype
appear_abcdどうぞよろしくお願いいたします。
fb-1848993692019106Participantゴメンナサイ、一部素のまま投稿してしまいました。こちらをご高覧いただければ幸いです。
同一twitterアカウントの会員登録状況は以下です。
Gianism3.0.3で登録(初回ログイン時会員登録)
user_id 5103
_wpg_twitter_id 153481xxxx (usermeta)
nickname @abcd (usermeta)
user_login abcd@pseudo.twitter.comusers (users)
user_nicename abcd@pseudo.twitter.com (users)Gianism1.0で登録(初回ログイン時会員登録)
user_id 1386
_wpg_twitter_id カラム、値 両方ともなし(usermeta,usersとも)
nickname @abcd (usermeta)
user_login @abcd (users)
user_nicename abcd (users)Gianism1.0ログインの場合、_wpg_twitter_id はカラム自体がありません。更にuser_login user_nicenameの値の選定基準が違っていました。
ご指導のほど、どうぞよろしくお願いいたします。
fb-1848993692019106Participantお世話になります。同一twitterアカウントの会員登録状況は以下です。
Gianism3.0.3で登録(初回ログイン時会員登録)
user_id 5103
_wpg_twitter_id 153481xxxx (usermeta)
nickname @abcd (usermeta)
user_login abcd@pseudo.twitter.comusers (users)
user_nicename abcd@pseudo.twitter.com (users)Gianism1.0で登録(初回ログイン時会員登録)
user_id 1386
_wpg_twitter_id カラム、値 両方ともなし(usermeta,usersとも)
nickname @tutor_A2 (usermeta)
user_login @tutor_A2 (users)
user_nicename tutor_A2 (users)Gianism1.0ログインの場合、_wpg_twitter_id はカラム自体がありません。更にuser_login user_nicenameの値の選定基準が違っていました。
ご指導のほど、どうぞよろしくお願いいたします。
fb-1848993692019106Participantご連絡ありがとうございます。下記を使用したところ、無事解決いたしました。御礼申し上げます。が、
// ユーザーがログインしていない場合だけログインボタンを表示
if ( !is_user_logged_in() ) {
gianism_login();
}
新しい問題が発生しています。Gianism1.0で以前から会員登録を受付ておりますが、今回Gianism3.0.3にバージョンアップ(同時に、wordpressを3.8.3→4.7.3に、同様にphpを5.3CGIから5.6モジュールにアップデート)したところ冒頭の問題が発生したのですが、新しい問題は–、
Gianism1.0ですでに会員登録をしている人が(ブラウザーのクッキーを消去した場合?)、Gianism3.0.3経由でログインした場合、別の会員として登録されてしまいます。DBのusersテーブルで調べてみますと、[“user_login”]=>string(x) “abcd”が、[“user_login”]=>string(y)”abcd@pseudo.twitter.com”と別の会員になっていました。
これに対処するのは、どうすれば良いのでしょうか? 引き続きご指導をお願いいたします。
fb-1848993692019106Participant未明にもかかわらず早速のご返信、ありがとうございます。ご指摘の2点について確認してみましたが、対処すべき点はありませんでした。しかし、「キャッシュ」というご指摘からもしやと思い、ブラウザの「閲覧履歴」を削除いたしましたところ、「twitterの認証ページ」が現れ、目的のページにたどり着くことができました。
しかし、何回かテストをしてみますと、毎回ブラウザの「閲覧履歴」を削除しないと正常な遷移をせず、ブラウザの「閲覧履歴」を削除しないと冒頭ご相談申し上げた症状が出ている次第です。
引き続き、アドバイスを賜ればありがたいです。どうぞよろしくお願いいたします。 -
AuthorPosts