Pourquoi la variable $id est-elle automatiquement convertie en chaîne sur le serveur WAMP mais pas sur le serveur Bluehost ?
P粉933003350
P粉933003350 2023-09-08 23:26:44
0
1
450

En PHP, la variable $id doit recevoir une valeur entière du client. Cependant, lorsque le client envoie la valeur id sous forme d'entier au script PHP à l'aide de la méthode de requête POST, elle est automatiquement convertie en type chaîne en PHP lorsque le script est téléchargé sur le serveur WAMP. D'un autre côté, lorsque le script est téléchargé sur le serveur Bluehost, les valeurs d'identification sont toujours des entiers et ne sont pas converties en chaînes, ce que je souhaite.

Il s'agit d'un simple script PHP :

<?php

$id = $_POST["id"];

if (is_int($id))
    echo "It is integer"; // It will print this if the PHP script was uploaded to the Bluehost server.
else if (is_string($id))
    echo "It is string"; // It will print this if the PHP script was uploaded to the WAMP server.

La valeur id envoyée par le client est envoyée via l'application Android, voici comment j'envoie la valeur id au script PHP :

Classe RetrofitManager

public class RetrofitManager {

    private static RetrofitManager.Api api;

    public static RetrofitManager.Api getApi() {
        if (api == null)
            api = new Retrofit.Builder()
                .baseUrl("http://192.151.5.721/API/")
                .client(new OkHttpClient.Builder().readTimeout(3, TimeUnit.MINUTES).writeTimeout(3, TimeUnit.MINUTES).connectTimeout(25, TimeUnit.SECONDS).build())
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava3CallAdapterFactory.create())
                .build()
                .create(Api.class);

        return api;
    }

    public interface Api {

        @FormUrlEncoded
        @POST("Countries/Get.php")
        Single<CountryModelResponse> getCountries(@Field("id") int countryId);

    }

}

Classe CountryRepository

public class CountriesRepository {

    public LiveData<Object> getCountries(Context context) {
        MutableLiveData<Object> mutableLiveData = new MutableLiveData<>();
        PublishSubject<String> retrySubject = PublishSubject.create();

        RetrofitManager.getApi().getCountries(Navigation.findNavController(MainActivity.activityMainBinding.activityMainFragmentContainerViewContainer).getPreviousBackStackEntry() == null ? SharedPreferencesManager.getIntegerValue(context, SharedPreferencesManager.Keys.COUNTRY_ID.name()) : -1)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .doOnSubscribe(mutableLiveData::setValue)
            .doOnError(throwable -> {
                LinkedHashSet<Object> linkedHashSet = new LinkedHashSet<>();
                linkedHashSet.add(!Utils.isInternetConnected(context) ? 100 : throwable instanceof SocketTimeoutException ? 200 : 300);
                linkedHashSet.add(retrySubject);
                mutableLiveData.setValue(linkedHashSet);
            })
            .retryWhen(throwableFlowable -> throwableFlowable.flatMap(throwable -> retrySubject.toFlowable(BackpressureStrategy.DROP).take(1), (throwable, s) -> s))
            .subscribe(countryModelResponse -> {
                if (countryModelResponse.getRequestStatus() == 100)
                    mutableLiveData.setValue(countryModelResponse);
                else {
                    LinkedHashSet<Object> linkedHashSet = new LinkedHashSet<>();
                    linkedHashSet.add(300);
                    linkedHashSet.add(retrySubject);
                    mutableLiveData.setValue(linkedHashSet);
                }
            });

        return mutableLiveData;
    }

}

Je ne sais pas pourquoi cette différence de comportement se produit entre les deux serveurs.

J'utilise la dernière version du serveur PHP et WAMP.

P粉933003350
P粉933003350

répondre à tous(1)
P粉178894235

Toutes les requêtes via HTTP sont envoyées sous forme de chaînes. Nous devons l'adapter à nos besoins. Dans votre cas, le comportement est étrange. Essayez de vérifier si la version de PHP est la même aux deux extrémités.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!