Это всегда имеет значение true:
((mb_strlen($_POST['ISBN'], 'utf-8') != 13) | (mb_strlen($_POST['ISBN'], 'utf-8') != 10))
Вы говорите: «Если ISBN не имеет длину 13 символов или ISBN не имеет длину 10 символов, то это правда». Но ни одна строка не может быть как 13 символов, так и 10 символов.
Попробуйте вместо этого:
!((mb_strlen($_POST['ISBN'], 'utf-8') == 13) | (mb_strlen($_POST['ISBN'], 'utf-8') == 10))
Что было бы "если дело не в том, что ISBN равен 13 символам или ISBN равен 10 символам, тогда true".