React-native с PHP всегда возвращает NULL - PullRequest
1 голос
/ 06 июля 2019

Я пытаюсь создать логин, который использует аутентификацию PHP / MySQL для моего приложения. У кого-то был тот же пост, что и у меня. Как я могу использовать реактивный с php, при этом возвращаемые данные всегда равны нулю Я попытался реализовать рекомендуемые изменения, потому что я не слышал о php: // input до сегодняшнего дня, но он все еще возвращает NULL. Я хотел посмотреть, может ли рукопожатие «икать», поэтому я настроил тестовую таблицу, встроенную в MySQL, для хранения необработанных данных, которые возвращаются, чтобы увидеть, получает ли сервер информацию, но столбец таблицы всегда возвращает NULL после каждого вставить. Я пытаюсь передать данные JSON в PHP-скрипт, но, наверное, это не нравится? У кого-нибудь есть идеи?

// Мой код для моего файла login.js

import React from "react";
import { StyleSheet, ScrollView, KeyboardAvoidingView, TouchableOpacity, AsyncStorage, TextInput, Button, View, Text } from 'react-native';
import { createStackNavigator, createAppContainer } from 'react-navigation';

// internal includes...
import styles from '../styles/styles.js'; // styles is the only one lowercase

class Login extends React.Component {

  constructor(props) {
    super(props);
    this.state = {
      username: '',
      password: '',
    }
  }
  // check if the user is already logged in...
  componentDidMount() {
    this._loadInitialState().done();
  }

  _loadInitialState = async () => {
    var value = await AsyncStorage.getItem('user');
    if (value !== null) {
      this.props.navigation.navigate('Profile');
    }
  }

  render() {
    return (
        <KeyboardAvoidingView behavior='padding' style={styles.wrapper}>
          <View style={styles.container}>
            <Text style={styles.header}> Login </Text>

            <TextInput
              style={styles.TextInput} placeholder='Username'
              onChangeText={ (username) => this.setState({username}) }
              underLineColorAndroid='transparent'
            />
            <TextInput
              style={styles.TextInput} placeholder='Password'
              onChangeText={ (password) => this.setState({password}) }
              underLineColorAndroid='transparent'
            />
            <TouchableOpacity
              style={styles.btn}
              onPress={this.login}>
              <Text> Log In </Text>
            </TouchableOpacity>

          </View>
        </KeyboardAvoidingView>
    );
  }

  login = () => {
    // check if the username is being passed off properly...
    //alert(this.state.username);
    fetch('MYWEBSITELINK', {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        username: this.state.username,
        password: this.state.password,
      })
    })

    .then(function(response){ return response.json(); }) // transforms response into data that is readable for this app...
    .then(function(data) {
        console.log(data);
    })
  }
}
export default Login

// php-файл, который обрабатывает запрос на вход в систему

<?php
// Access MySQL login information file...
$path = $_SERVER['DOCUMENT_ROOT'];
$path .= "/live/configuration/mysqli.php";
require_once($path);

// set this in all mobile related files...
header('Content-Type: application/json');




$json = json_decode(file_get_contents('php://input'), true);


// create user record in the login table...
$query = "INSERT INTO test (data)
VALUES (?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('s', $json);
$stmt->execute();
$stmt->close();



?>

Редактировать 1: Я забыл опубликовать сообщение об ошибке / предупреждение, которое, как мне кажется, связано с моим форматом JSON. Msgstr "[Необработанное отклонение обещания: SyntaxError: Ошибка синтаксического анализа JSON: Неожиданный EOF]". Кто-нибудь теперь каким-либо образом вывести ответ, который я отправил в консоль, чтобы я мог увидеть, нужно ли переформатировать? Спасибо.

...