كيفية استخدام strstr مع $ _server ['http_referer'
سؤال
أنا أستخدم PHP لجعلها حتى تقوم حركة المرور الواردة بموقع الويب الخاص بي بإلحاق المعلومات اعتمادًا على محرك البحث. أقوم بإعداد $ _session ['kw'] ، إذا لم يتم تعيينه بالفعل ، لاتصل لي أنه SEO ولإلحاق مصطلحات البحث:
if (isset($result['q']))
$_SESSION['kw'] = 'seo-'.str_replace('\\"',"X",$result['q']);
elseif (isset($result['p']))
$_SESSION['kw'] = 'seo-'.$result['p'];
else {some other stuff}
س هو ما هو Google و MSN وطلبه لاستفساراتهم ، P هو ل Yahoo. الذي يغطي معظم حركة المرور الواردة. حسنًا ، أريد الآن تغييره قليلاً ، بحيث إذا كانت صفحة الإحالة هي Yahoo ، فإنها تُلحق Y ، إذا كانت Google A G ، MSN M إلخ.
حاولت:
if (isset($result['q'])& strstr($_SERVER['HTTP_REFERER'],'google'))
$_SESSION['kw'] = 'seo-G-'.str_replace('\\"',"X",$result['q']);
elseif (isset($result['q'])& !strstr($_SERVER['HTTP_REFERER'],'google'))
$_SESSION['kw'] = 'seo-M-'.str_replace('\\"',"X",$result['q']);
elseif (isset($result['p']))
$_SESSION['kw'] = 'seo-Y-'.$result['p'];
else {some other stuff}
لكن لا يمكنني جعل الأول إذا كان ذلك صحيحًا. إذا أتيت من Ask.com ، فأنا أحصل على "SEO-M ملحق" ، لكن لا يمكنني حتى عند القدوم من Google ، أحصل عليه إلى إلحاقه. هل أنا فقط أقوم بتنسيقها بشكل خاطئ؟
المحلول
تغيير & إلى &&. هذا هو المشغل المعتاد لمعظم لغات البرمجة للمنطق "و" و "و"
في PHP لديك && أو وللعمليات المنطقية المنطقية.
وعادة ما يستخدم في عمليات البت ، وهو خطأ هنا.
نصائح أخرى
أعتقد أنك تستخدم الخطأ والمشغل ، يجب استخدامك &&
ليس مجرد &
. Ampersand واحد هو لعمليات bitwise.
محاولة:
if (isset($result['q']) && strstr($_SERVER['HTTP_REFERER'],'google'))