في بعض صفحات الموقع تظهر الرسالة التالية
Warning: Cannot modify header information - headers already sent by (output started at /usr/local/shared/tomcat/user/php/login.php:2) in /usr/local/shared/tomcat/user/php/login.php on line 41
فما حلها
في بعض صفحات الموقع تظهر الرسالة التالية
Warning: Cannot modify header information - headers already sent by (output started at /usr/local/shared/tomcat/user/php/login.php:2) in /usr/local/shared/tomcat/user/php/login.php on line 41
فما حلها
اعتقد انك قمت باستخدام الدالة set_cookie او قمت ببدء الجلسة في السطر 41 . فيجب عليك التحقق من عدم ارسال اي محرف قبل هذا السطر اتمنى ان تضع الكود لكي استطيع مساعدتك اكثر :)
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<?php
include 'connect.php';
if (isset($_POST['b'])) {
$id = $_POST['id'];
$pass = $_POST['pass'];
$query = "select * from teachers where id = " . $id . " and pass = " . "'$pass'";
$result = mysqli_query($dbc, $query);
$count = mysqli_num_rows($result);
if ($count == 1) {
$row = mysqli_fetch_array($result);
session_start();
$_SESSION['id'] = $row['id'];
$_SESSION['job'] = $row['job'];
switch ($_SESSION['job']) {
case 1: header("Location: admin_main.php");
break;
case 2: header("Location: sch_main.php");
break;
case 3: header("Location: sup_main.php");
break;
case 4: header("Location: teacher_main.php");
break;
}
}
else {
$m = "رقم الهوية أو كلمة المرور غير صحيحة";
header("Location: index.php?m=" . "$m");
}
}
else {
$m = "رقم الهوية أو كلمة المرور غير صحيحة";
header("Location: index.php?m=" . $m);
}
?>هذا كود للدخول للموقع والمشكلة في السطر 31 لاني حذفت بعض الاسطر
يبدو ان المشكلة من اول سطر . قاعدة عامة لا تستخدم اي دالة تقوم بتغيير http header بعد طباعة اي حرف . المهم قم بتغيير مكان اول سطر لكي يصبح بعد استدعاء الدالة header اتمنى ان تكون قد حلت المشكلة
جزاك الله خيرا
حذفت السطر الاول ولم تحل المشكلة
ملاحظة المشكلة تظهر عند رفع الموقع فقط اما في جهازي فلا تظهر المشكلة !
<?php
$dbc = @mysqli_connect('localhost', 'user', 'pass', 'data')
or die('لم يتصل') . mysqli_connect_error();
mysqli_set_charset($dbc, 'utf8');
?>هذا الملف connect ولا يوجد به سطر فارغ وقد جربت وحذفت الامر or die وما زالت المشكلة
كيف اصل الى php.ini
وجزاك الله خيرا
اقتباسنقلت الموقع لخادم آخر ولم تظهر المشكلة والحمدلله
جزاكم الله خيرا
- أنت بهذا لم تحل المشكلة , حاول أن تبحث عن سبب المشكلة وعالجه .
- كما قال لك أخي عبداللطيف تجنب طباعة أي شيئ قبل إستخدام دالة header أو ترك مسافات فارغة قبل بداية كود php أو كتابة أكواد html قبل أكواد php التي تحتوي على دالة header , وغالباً ترميز الملف يسبب بعض المشاكل بسبب بادئة ترميز الملف وهو عبارة عن حروف غير مرئية في بداية الملف لتعريف نوعية ترميز الملف وأفضل حل لهذه المشكلة هي أن تجعل ترميز الملف UTF-8 without BOM أي بدون بادئة وهذا الترميز ستجده غير ثابت أي تقوم بتحويل الوثيقة ثم تعود إليها مره أخرى ستجد أن الترميز تحول إلى ANSI الترميز الإفتراضي على نظام ويندوز -بالنسبة لمستخدمي ويندوز- فلتجنب هذا عليك فقط أن تضع نص باللغة العربية في الوثيقة في أي مكان وليكن بمثابة تعليق وبهذا سيظل هذا الترميز بدون تغيير , كنوع لتعريف تعدد اللغات داخل الوثيقة - فكرة مجربة :D - .
دمت بود
لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق
لا إله إلا أنت سبحانك إني كنت من الظالمين
جزاك الله خيرا
لكن لماذا لم تظهر المشكلة على الخادم الآخر
كل الحلول التي ذكرتها جربتها ولم تنفع
انا استخدم netbeans ide و xampp
ربما بعض إعدادات السرفر هي التي سببت هذه المشكلة كما أشار أخي عبداللطيف في الأعلى
لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق
لا إله إلا أنت سبحانك إني كنت من الظالمين
السلام عليكم
كما هو موضح هنا http://www.php.net/manual/en/function.header.php
اقتباسRemember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP.
أي أنه لا يجب إرسال أي شيء قبل المناداة على header()، لكنك في الكود تكتب ال meta tag قبل المناداة على header(). ربما هذا هو المشكل
أما لماذا لا يظهر المشكل في الخادم الآخر، فلأنه لا يظهر ال warnings في إعداداته، كما قال الأخ
السلام عليكم
ملاحضة
session_start
يجب ان تكون ان تكون اول سطر مباشرة بعد فتح php
الكود الكامل و الحل لمشكلتك باذن الله
<?php
session_start();
session_cache_limiter("nocache")
include 'connect.php';
if (isset($_POST['b'])) {
$id = $_POST['id'];
$pass = $_POST['pass'];
$query = "select * from teachers where id = " . $id . " and pass = " . "'$pass'";
$result = mysqli_query($dbc, $query);
$count = mysqli_num_rows($result);
if ($count == 1) {
$row = mysqli_fetch_array($result);
$_SESSION['id'] = $row['id'];
$_SESSION['job'] = $row['job'];
switch ($_SESSION['job']) {
case 1: header("Location: admin_main.php");
break;
case 2: header("Location: sch_main.php");
break;
case 3: header("Location: sup_main.php");
break;
case 4: header("Location: teacher_main.php");
break;
}
}
else {
$m = "رقم الهوية أو كلمة المرور غير صحيحة";
header("Location: index.php?m=" . "$m");
}
}
else {
$m = "رقم الهوية أو كلمة المرور غير صحيحة";
header("Location: index.php?m=" . $m);
}
?>