Rumah  >  Soal Jawab  >  teks badan

Mengapa pembolehubah $id ditukar secara automatik kepada rentetan pada pelayan WAMP tetapi tidak pada pelayan Bluehost?

Dalam PHP, pembolehubah $id harus menerima nilai integer daripada klien. Walau bagaimanapun, apabila pelanggan menghantar nilai id sebagai integer kepada skrip PHP menggunakan kaedah permintaan POST, ia secara automatik ditukar kepada jenis rentetan dalam PHP apabila skrip dimuat naik ke pelayan WAMP. Sebaliknya, apabila skrip dimuat naik ke pelayan Bluehost, nilai id masih integer dan tidak ditukar kepada rentetan, itulah yang saya mahukan.

Ini ialah skrip PHP mudah:

<?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.

Nilai id yang dihantar dari klien dihantar melalui aplikasi Android, ini adalah cara saya menghantar nilai id ke skrip PHP:

Kelas 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);

    }

}

Kelas CountriesRepository

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;
    }

}

Saya tidak pasti mengapa perbezaan tingkah laku ini berlaku antara kedua-dua pelayan.

Saya menggunakan versi terkini pelayan PHP dan WAMP.

P粉933003350P粉933003350430 hari yang lalu456

membalas semua(1)saya akan balas

  • P粉178894235

    P粉1788942352023-09-09 14:02:06

    Semua permintaan melalui HTTP dihantar sebagai rentetan. Kita perlu membentuknya mengikut keperluan kita. Dalam kes anda, tingkah laku itu pelik. Cuba semak sama ada versi PHP adalah sama pada kedua-dua hujungnya.

    balas
    0
  • Batalbalas