PHP_SELF$ כותב לי undefined, מדוע?

selalerer

New member
PHP_SELF$ כותב לי undefined, מדוע?

אני כותב PHP_SELF$ בתוך printf והוא כותב לי שזה משתנה לא מוגדר. הורדתי את הגרסה החדשה ביותר היציבה של PHP לWINDOWS ויש לי XP+IIS. מישהו יודע למה הוא כותב לי ככה?
 

רוןמ

New member
אופס... זה אמור להיות

$_SERVER['PHP_SELF']​
כנ"ל בקישור
 

selalerer

New member
תודה רבה+עוד שאלות.

1. ה PHP_SELF$ מופיע באיזה turorial שאני לומד ממנו, יכול להיות שכך זה היה בגרסאות ישנות יותר של PHP (אולי PHP3 שעליו הוא מלמד???)? 2.בקוד הבא:
if($row=mysql_fetch_row($result)) { echo("<table border=5 width='80%'>"); printf("<tr style=\"color:darkblue;background-color:lightblue;\"> <td>&nbsp</td><td>number</td><TD>Name</td><td>Family</td><td>Address</td><td>Position</td></tr>\n"); $even=FALSE; do { if($even) print("<tr bgColor=\"#FFFFE0\">"); else printf("<tr bgColor=\"#FFF0F0\">"); printf("<td><a href=\"%s?id=%s\">Go!</a></td>\n",$_SERVER["PHP_SELF"],$row[0]); foreach($row as $value) { printf("<td style=\"text-align:center;\">%s</td>\n",$value); } printf("</tr>"); $even=!$even; }while($row=mysql_fetch_row($result)); print("</table>"); }​
אם אני עןשה mysql_fetch_array (במקום mysql_fetch_row) הוא מדפיס לי פעמיים כל ערך, למה זה ? האם הfetch_array ממלא לי בערכים כפולים מאיזשהי סיבה? אני בסך הכל משתמש בforeach שאמור לתת לי פעם אחת כל מה שיש במערך, או שהאם גם אותו הבנתי לא נכון? תודה רבה, סלע.
 

יולו

New member
תשובות..

1. יכול להיות במדריך הזה עשו בלי ששמת לב הצבה כזאת
$PHP_SELF = $_SERVER['PHP_SELF'];​
אחרת אין לי מושג, זה נשמע מאד מוזר.. 2. בלולאת while ככה:
while ($row=mysql_fetch_array($result)) { ..כאן הקוד.. }​
מקווה שעזרתי לך.. בהצלחה, יולו.
 

selalerer

New member
1. תודה. 2. לא הבנת אותי.

התכוונתי שאם אני עושה:
$row=mysql_fetch_array($result);​
ואז מדפיס בלולאה כזאת:
foreach($row as $value) printf("%s,",$value);​
אז הוא מדפיס לי כל ערך פעמיים (כנראה שזה מה שיש בrow$), נגיד שם עובד פעמיים (בוב,בוב,) ואז שם משפחה פעמיים (לוי,לוי,) וכו'.
 

רוןמ

New member
..

%s זה עבור הדפסה של מחרוזת ב- printf (כמו בשפת סי) האמת שזה קצת מיותר במקרה הזה שהוא לא מעצב באופן כלשהו את הדפסת המחרוזת.
 
$PHP_SELF הוא דווקא בגירסאות חדשות

אני בקושי השתמשתי ב-$_SERVER עבור ה-PHP_SELF, כי קיים ה-$PHP_SELF. אותו דבר גם לגבי משתנים ב-POST; לא השתמשתי מעולם במערך $_POST, אלא ישר בשם השדה, לדוגמא במקום
$_POST['field1']​
אני משתמש ב
$field1​
הרבה יותר נוח
 

selalerer

New member
אז מוזר שהוא לא עובד אצלי, הורדתי

את הגרסה האחרונה.
 
והנה הסבר לגבי PHP_SELF

כפי שהקישור הזה קובע, צריך ש- registered_globals יהיה אמת על מנת שהמשתנה $PHP_SELF יוכל לעבוד. אחרת, יש להשתמש רק במערך $_SERVER.
 

רוןמ

New member
ועוד משהו...

איך אפשר להשתמש פשוט בשם השדה עבור טפסים במקום להשתמש כל הזמן ב- $_POST? וזה לא קצת "סיכון"? איך אני יודע אם חברת האכסון שלי מגדירה את הקובץ לפי הצרכים שלי?
 

selalerer

New member
לכן אני חושב שעדיף להשתמש בכתיב...

...הארוך יותר, בשביל הניידות של הקוד. אפשר גם לעשות ככה בתחילת הקוד ולפתור את העניין:
$field1=_POST['field1'];​
 
כן, זה-php.ini

ונראה לי שאותה אופציה מאפשרת שימוש בשם השדות במקום במערך $_POST. לדעתי, אין כאן סיכון. לי זה עבד בכל פעם שניסיתי. אני לא זוכר את הפעם האחרונה שהשתמשתי ב-POST.
 
למעלה