0
在PHP中使用sprintf
時,假設%d
將始終嘗試將該參數強制轉換爲整數是否安全?PHP sprintf%d行爲
例如:
<?php
echo sprintf('Hello %d', 'foo');
echo sprintf('Hello %d', -1);
echo sprintf('Hello %d', 1);
echo sprintf('Hello %d', 0.1);
echo sprintf('Hello %d', true);
echo sprintf('Hello %d', false);
echo sprintf('Hello %d', null);
echo sprintf('Hello %d', array('foo'));
echo @sprintf('Hello %d', new stdClass());
我不是用這個來防止SQL注入(已經有參數化查詢我的應用程序),而是構建一個URL查詢參數。
很明顯[記錄](http://php.net/sprintf):'變量將被合成爲指定符合適的類型。然而,將對象傳遞給需要字符串(比如說)的東西需要對象實現magic __toString()方法。 PHP將無法轉換所有類型,只是知道如何去做。 –
@MarcB哎呀我錯過了文檔中的表格。如果你想把它作爲答案,那麼我會接受它 –