Mengapa pembolehubah $id ditukar secara automatik kepada rentetan pada pelayan WAMP tetapi tidak pada pelayan Bluehost?
P粉933003350
P粉933003350 2023-09-08 23:26:44
0
1
470

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粉933003350
P粉933003350

membalas semua(1)
P粉178894235

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan