Вот мой код создателя Qt для отправки данных на сервер PHP и получения ответа.
QNetworkAccessManager *manager = new QNetworkAccessManager(this); QNetworkAccessManager::connect(manager, SIGNAL(finished(QNetworkReply*)),this , SLOT(replyFinished(QNetworkReply*))); QNetworkRequest *request = new QNetworkRequest(QUrl("http://68.169.55.41/fss/verifylogindetails.php")); QByteArray postData =" {\"estate_id\":\"hsr\",\"emp_pin\":1234,\"emp_id\":\"santhosh\"}"; request->setRawHeader( "User-Agent" , "Mozilla Firefox" ); request->setRawHeader( "charset", "utf-8" ); request->setRawHeader( "Connection", "keep-alive" ); manager->post(*request, postData ); } void MainWindow::replyFinished(QNetworkReply *reply) { QString data = reply->readAll().trimmed(); qDebug() << data; }
И вот мой PHP-код для получения данных входа и сравнения с значениями базы данных и отправки ответа.
<?php include 'config.php'; $data = json_decode($_SERVER['HTTP_JSON']); $con = mysql_connect($host, $user_name, $password); if (!$con) { die('Could not connect: '.mysql_error()); } mysql_select_db($db_name, $con); $result = mysql_query("SELECT * FROM login_data_table"); while($row = mysql_fetch_array($result)) { if((strcasecmp( $row['Emp_Id'], $data->emp_id) == 0) && ($row['Emp_Pin'] == $data- >emp_pin) && (strcasecmp( $row['Estate_Id'], $data->estate_id) == 0)) { echo "SUCCESS"; } else { echo "FAIL"; } } mysql_close($con); ?>
Моя проблема ….. Всегда я получаю сообщение FAIL с сервера. Даже я отправляю правильные данные для входа. пожалуйста, помогите мне, где я ошибаюсь в своем коде.
Я отправлю часть кода из своей собственной программы. Надеюсь, это поможет:
void MainWindow::sendPost(url) { QUrl params; params.addQueryItem("usrname", login); params.addQueryItem("passwrd", password); QByteArray data; data.append(params.toString()); data.remove(0,1); QNetworkAccessManager *manager = new QNetworkAccessManager(this); QNetworkReply *reply = manager->post(QNetworkRequest(url), data); CONNECT(reply, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*))); } void MainWindow::replyFinished(QNetworkReply *reply) { QString data = reply->readAll().trimmed(); qDebug() << data; }
PHP-код будет получать значения из программы, используя массив $ _POST ($ _POST ['usrname'] и $ _POST ['password'] удерживать оба значения, отправленные из программы), а не $ _SERVER. Я понятия не имею, почему вы использовали $ _SERVER.