MySQLを利用してログイン画面で認証しようという試みは、つい先日、乗り越えることができました。
問題箇所は複数あり、データ型が違っていたことが原因のようです。
MySQL_Query:
/Setting m_UserName
this->UserName_tmp=UserName.toStdString().c_str(); <--QString~stringに変換
this->m_UserName=QString(UserName_tmp.constData());<-String~QStringに変換 UserName_save.append(m_UserName.toStdString());<-グローバル変数に代入
this->m_db.setUserName(m_UserName);<-QSqlDatabaseに登録
PassWordはUserNameと同様に変換すればいいので割愛します。
データベース名とデータベースドライバー名は直接代入することにしました。
理由は、この2つは同じ値を使うためです。なので割愛したいと思います。
ホスト名は、直接代入する方法がありますが、動的でないので、ここは複数のパソコンからアクセスすることを想定し、動的にしようと思います。
this->fd=socket(AF_INET,SOCK_DGRAM,0);
this->ifr->ifr_ifru.ifru_addr.sa_family=AF_INET;
this->m_HostAddr->append(inet_ntoa(((struct sockaddr_in *) &
ifr->ifr_ifru.ifru_addr)->sin_addr));
this->HostAddr_Len=this->m_HostAddr->length();
this->m_HostAddr_char=new char[this->HostAddr_Len+1];
memcpy(this->m_HostAddr_char,this->m_HostAddr->constData(),this->HostAddr_Len);
とすればIPアドレスが得られると掲載されているサイトがあり、抜粋して試してみた。
しかしながら、得られる値はIPアドレスであることに違いないが、欲しい値ではないことが判明した。このやり方だと、@0x13e8と得られる。私の欲しい値はプライベートアドレスです。なので、他の方法がないか探すことにしましたが、見つからずじまいでした。思いついたのは、hostnameがつかえればプライベートアドレスが得られるのではないかと考え、使う方法を探し当てました。
その方法は、system("hostname -i")とするだけです。この方法であればプライベートアドレスを得ることができることをつきとめました。
次にユーザー登録フォームを完成させようとしたのですが、Queryが働かず、突然終了してしまう事態になってしまいました。いよいよお手上げのようです。
ソースファイル: https://drive.google.com/file/d/0B0oSFZs-dbRZOGZ0NDZ3dFRQanc/edit?usp=sharing
問題箇所は複数あり、データ型が違っていたことが原因のようです。
MySQL_Query:
/Setting m_UserName
this->UserName_tmp=UserName.toStdString().c_str(); <--QString~stringに変換
this->m_UserName=QString(UserName_tmp.constData());<-String~QStringに変換 UserName_save.append(m_UserName.toStdString());<-グローバル変数に代入
this->m_db.setUserName(m_UserName);<-QSqlDatabaseに登録
PassWordはUserNameと同様に変換すればいいので割愛します。
データベース名とデータベースドライバー名は直接代入することにしました。
理由は、この2つは同じ値を使うためです。なので割愛したいと思います。
ホスト名は、直接代入する方法がありますが、動的でないので、ここは複数のパソコンからアクセスすることを想定し、動的にしようと思います。
this->fd=socket(AF_INET,SOCK_DGRAM,0);
this->ifr->ifr_ifru.ifru_addr.sa_family=AF_INET;
this->m_HostAddr->append(inet_ntoa(((struct sockaddr_in *) &
ifr->ifr_ifru.ifru_addr)->sin_addr));
this->HostAddr_Len=this->m_HostAddr->length();
this->m_HostAddr_char=new char[this->HostAddr_Len+1];
memcpy(this->m_HostAddr_char,this->m_HostAddr->constData(),this->HostAddr_Len);
とすればIPアドレスが得られると掲載されているサイトがあり、抜粋して試してみた。
しかしながら、得られる値はIPアドレスであることに違いないが、欲しい値ではないことが判明した。このやり方だと、@0x13e8と得られる。私の欲しい値はプライベートアドレスです。なので、他の方法がないか探すことにしましたが、見つからずじまいでした。思いついたのは、hostnameがつかえればプライベートアドレスが得られるのではないかと考え、使う方法を探し当てました。
その方法は、system("hostname -i")とするだけです。この方法であればプライベートアドレスを得ることができることをつきとめました。
次にユーザー登録フォームを完成させようとしたのですが、Queryが働かず、突然終了してしまう事態になってしまいました。いよいよお手上げのようです。
ソースファイル: https://drive.google.com/file/d/0B0oSFZs-dbRZOGZ0NDZ3dFRQanc/edit?usp=sharing
コメント
コメントを投稿