Re: PHP Warning: strlen() expects parameter 1 to be string
Steve,
I imagine you already have, but I can't resist asking if you did a winmerge of the old and new just in case.
Re: PHP Warning: strlen() expects parameter 1 to be string
Thanks for the interest.
This is exactly what I have in the live shop code:
PHP Code:
while (list($key, $value) = each($_GET)) {
if (is_array($value)) trigger_error('GET param found to be array: ' . print_r($value, true) . ' --- contents of GET: ' . print_r($_GET, true));//steve looking for reason, as per http://www.zen-cart.com/forum/showthread.php?t=176804
//if ( (strlen($value) > 0) && ($key != 'main_page') && ($key != zen_session_name()) && ($key != 'error') && (!in_array($key, $exclude_array)) && ($key != 'x') && ($key != 'y') ) {//steve original line
if ( (!in_array($key, $exclude_array)) && (strlen($value) > 0) && ($key != 'main_page') && ($key != zen_session_name()) && ($key != 'error') && ($key != 'x') && ($key != 'y') ) {//steve this line edited to stop debug error as per http://www.zen-cart.com/forum/showthread.php?p=1070316#post1070316
if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {
Re: PHP Warning: strlen() expects parameter 1 to be string
Its odd that this error is not triggered always..?
just got another, the first one since the 17th...
Can I do further testing or just forget it?
Quote:
[25-Oct-2011 23:12:41] PHP Notice: GET param found to be array: Array
(
[0] => 210
)
--- contents of GET: Array
(
[main_page] => index
[action] => notify
[notify] => Array
(
[0] => 210
)
)
Re: PHP Warning: strlen() expects parameter 1 to be string
I've never known it to block a sale.
But, as I stated earlier, we've had no problems on any site since changing to the suggested fix.
Sorry I can't be of more help.
Re: PHP Warning: strlen() expects parameter 1 to be string
From my experience, this has to do with the "notify" stuff, I am using the Caixa sermepa module and kept having troubles of orders paid but not showing up on my shop.
Do not use the "notify" option, I do not know how your module works but you should be able to disable this.
Won't change anything to the way the program works, you will be notified for each order anyway but your bank will stop trying to send you a mail for this.
In my case, this was where the problem was: the notification url in the module.
Hope this help!
:unsure:
Re: PHP Warning: strlen() expects parameter 1 to be string
I get this error across all payment modules.
It could be a week between occurrences so no obvious pattern.
I do use Advanced Shipper so in effect it has the same shipping module in use every time so you could throw mud at that but the developer says not guilty (and is to be trusted).
Re: PHP Warning: strlen() expects parameter 1 to be string
The issue is that you are on PHP 5.3 and that changed the way that strlen handles arrays.
Before 5.3 strlen would return the word array for any array - hence feeding a string into the function - from 5.3 it returns NULL instead and strlen fails.
I had the same problem and fixed it by counting the elements in the array instead.
so:
PHP Code:
if ( (!in_array($key, $exclude_array)) && (strlen($value))> 0) && ($key != 'main_page') && ($key != zen_session_name()) && ($key != 'error') && ($key != 'x') && ($key != 'y') ) {//steve this line edited to stop debug error as per http://www.zen-cart.com/forum/showthread.php?p=1070316#post1070316
if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {
would become
PHP Code:
if ( (!in_array($key, $exclude_array)) && (count($value) > 0) && ($key != 'main_page') && ($key != zen_session_name()) && ($key != 'error') && ($key != 'x') && ($key != 'y') ) {
if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {
This assuming that you know you are always getting an array returned. If not then you would need to test if it was an array or a string earlier and set a flag to test against
Re: PHP Warning: strlen() expects parameter 1 to be string
Quote:
I had the same problem and fixed it by counting the elements in the array instead.
Thanks for sharing that.
Maybe I'll be able to sleep at night now with no fear of random debugs in the morning!
Re: PHP Warning: strlen() expects parameter 1 to be string
Quote:
Originally Posted by
Aureanus
This assuming that you know you are always getting an array returned.
Therein is the problem. It is almost NEVER getting an array. The ONLY time it gets an array is when the product-notifications screen is presented. The zillion other times that the function is used there is no array passed at all.
I submit that your proposed fix is likely to cause the entire function to not return the right results, thus preventing normal operation of the majority of cases where this function is called.
Thus, its NOT SAFE to be used on live sites, unless of course you want to encounter lost sales and poor customer experience while shopping.
Re: PHP Warning: strlen() expects parameter 1 to be string
Quote:
Thus, its NOT SAFE to be used on live sites, unless of course you want to encounter lost sales and poor customer experience while shopping.
Assuming that the php version is causing this as Aureanus asserts, I (for one) would be happy to trial a fix...I still get these irritating errors most days.