הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   PHP להציב משתנה X שאני לוקח מPOST של PHP אחר (https://hosts.co.il/forums/showthread.php?t=105774)

Tyler 24-11-13 21:58

PHP להציב משתנה X שאני לוקח מPOST של PHP אחר
 
שלום,
יש לי אתר שעליו אני מריץ משחק דפדפן שפועל רק לבעלי אותה הרשת (אנחנו מריצים אותו ברשת של הבית ספר).

בכ"מ,
בשביל להכנס למשחק המשתמש אמור להרשם ואני אמור לאשר אותו.

איך התהליך עובד?

הוא נכנס להרשמה, נרשם. המערכת מעניקה לו קוד ייחודי לדוגמא X7X1X1224X, הוא מכניס את הקוד בתיבת ההרשמה .
לאחר מכן הקוד נשלח אלי לקובץ שנמצא על השרת עצמו דרך פקודת POST:

קוד:

$_POST as $variable => $value)
ולאחר מכן נשמר בקובץ טקסט בתור:

mycode = X7X1X1224X

ולאחר שהרבה משתמשים נרשמים, הקובץ טקסט נראה:

mycode = xxxxxxx
mycode = yyyyyyy
mycode = zzzzzzzz
mycode = aaaaaaa

ועוד המון המון שורות. בקיצור לכל משתמש יש את הקוד שלו וזה מציג לי את כל הקודים בשורה בקובץ טקסט.
לאחר מכן אני נכנס לקובץ טקסט (שרק אני יכול לגשת אליו כיוון שאני הוא מקים אתר ובעל הגישה היחידה לROOT), מעתיק את הקוד,
ניגש לקובץ PHP אחר שנמצא על המערכת וגלוי רק לי, מדביק בו את הקוד של המשתמש, וכך המשתמש מאושר והופך להיות "משתמש פעיל". ואני אמור לאשר כל אחד, וזה מאוד מעייף, תחשבו שאני אמור לעבור אחד אחד, לעשות העתק - הדבק ולהציב בPHP השני וכך הלאה.

זה תהליך מאוד מעייף, ורציתי לדעת האם יש דרך לחבר בין 2 קבצי הPHP בלי המתווך של ה"קובץ TXT" באמצע?

כלומר לשלוח בפקודת הPOST מאותו PHP הראשון , ולהציב ישירות בעזרת פקודת GET בPHP השני את הקוד.

הרגע ניסיתי להשתמש בייעוץ מחבר:

הקובץ AJAX שלי:

קוד:

  var  the_data = 'user_code='+code;

  request.open("POST", "post.php", true);

שולח את הDATA (את הקוד) בתור משתנה של "USER_CODE" לקובץ PHP שנקרא POST:

קוד:

$handle = fopen("codes.txt", "a");foreach($_POST as $variable => $value)
 {
fwrite($handle, $variable);
fwrite($handle, "=");
fwrite($handle, $value);
fwrite($handle, "\r\n");
}
fwrite($handle, "\r\n");
fclose($handle);
exit;
?>

הקובץ הזה מציב את הקודים בקובץ הטקסט codes.txt בתור תבנית:
קוד:

user_code = XXXXXXXXXXX
הXXXXX זה בעצם משתנה ה$value שמוגדר בקובץ הPOST, שמקבל את הערך של המשתנה עוד מקובץ הAJAX.

עכשיו, הלכתי בעצם לקובץ הAJAX, ושיניתי אותו שבמקום שישלח אותו לקובץ הPOST שיאחסן את הקוד בטקסט, עשיתי:

קוד:

  var  the_data = 'user_code='+code;

  request.open("POST", "run.php", true);

run.php זה בעצם הקובץ PHP שבו אני מריץ את הקודים ידנית.

הלכתי אליו והצבתי את השורות שאמרת לי עם שינויים בהתאם אלי:
קוד:


foreach($_GET as $variable => $value)
 {

if($_POST['variable'] == $variable && $_POST['value'] == $value)

{

user_code = code;

}
}

וזהו מכאן ומטה באות בעצם כל פקודות הJAVA שאמורות להריץ את הUSER_CODE בתור הCODE שהוא מקבל מהקובץ. אך זה לא עובד.


הרי כשאני מריץ אותו ידנית ומציב את הקוד, הוא קורא את הקוד שאני שם בתור "USER_CODE" אז למה כשאני מגדיר את הUSER_CODE בתור ה$CODE ($VALUE) שהוא משיג מהקובץ PHP, זה לא מריץ?

אשמח לעזרה, תודה!

Haimz 24-11-13 22:15

אין צורך בAJAX,
תפרט קצת איך הקובץ שעושה את הפעולה עובד.

בכל מקרה, זו השיטה שבה אני הייתי עושה את זה:
אני מניח שאתה לא משתמש במחלקות, אז ככה:
טבלה במסד נתונים בשם users, הusername, password, email וכו'.. ברורים מאליו. אתה מוסיף עמודה בשם confirmed שתהיה כמובן INT והיא תמיד תהיה על אפס.
ככה עובד העמוד שמאשר את המשתמשים:
אתה מציג בטבלה את כל המשתמשים שהעמודה confirmed = 0, בטבלה לצד כל שורה, יש checkbox שנראה ככה: (שים לב לערך VALUE)
קוד:

<input type="checkbox" name="toconfirm[]" value="MEMBER_ID" />
ברגע שתשלח את זה בתור POST, אתה תקבל בPHP מערך שמכיל את האיידים של כולם, ואז זה פשוט מאוד, השאילתה שלך תהיה כזו:
קוד:

UPDATE users SET confirmed = '1' WHERE id IN(" .$ids. ")
המשתנה $ids בעצם מציג את האיידים של כל אלה שסימנת בcheckbox, כלומר אם סימנת את המשתמש מספר 5 ואת משתמש מספר 7, זה יציג 5,7,
איך זה אמור להציג את זה ככה? פשוט מאוד:
קוד:

$ids = implode(",", $_POST['toconfirm']);
- במידה ולא תסמן כלום, זה יציג שגיאה ככה שתעשה תנאי לפני.

זהו בגדול, בהצלחה.

Tyler 25-11-13 12:53

ציטוט:

נכתב במקור על ידי Haimz (פרסם 884229)
אין צורך בAJAX,
תפרט קצת איך הקובץ שעושה את הפעולה עובד.

בכל מקרה, זו השיטה שבה אני הייתי עושה את זה:
אני מניח שאתה לא משתמש במחלקות, אז ככה:
טבלה במסד נתונים בשם users, הusername, password, email וכו'.. ברורים מאליו. אתה מוסיף עמודה בשם confirmed שתהיה כמובן INT והיא תמיד תהיה על אפס.
ככה עובד העמוד שמאשר את המשתמשים:
אתה מציג בטבלה את כל המשתמשים שהעמודה confirmed = 0, בטבלה לצד כל שורה, יש checkbox שנראה ככה: (שים לב לערך VALUE)
קוד:

<input type="checkbox" name="toconfirm[]" value="MEMBER_ID" />
ברגע שתשלח את זה בתור POST, אתה תקבל בPHP מערך שמכיל את האיידים של כולם, ואז זה פשוט מאוד, השאילתה שלך תהיה כזו:
קוד:

UPDATE users SET confirmed = '1' WHERE id IN(" .$ids. ")
המשתנה $ids בעצם מציג את האיידים של כל אלה שסימנת בcheckbox, כלומר אם סימנת את המשתמש מספר 5 ואת משתמש מספר 7, זה יציג 5,7,
איך זה אמור להציג את זה ככה? פשוט מאוד:
קוד:

$ids = implode(",", $_POST['toconfirm']);
- במידה ולא תסמן כלום, זה יציג שגיאה ככה שתעשה תנאי לפני.

זהו בגדול, בהצלחה.

הקובץ PHP השני שבו אני מציב את הקוד, לוקח אותו בתור הערך user_code ומעביר אותו דרך קוד JAVASCRIPT ארוך שעושה לא מעט פעולות..

Haimz 25-11-13 16:06

ציטוט:

נכתב במקור על ידי Tyler (פרסם 884252)
הקובץ PHP השני שבו אני מציב את הקוד, לוקח אותו בתור הערך user_code ומעביר אותו דרך קוד JAVASCRIPT ארוך שעושה לא מעט פעולות..

תיישם את השיטה שאמרתי לך..

Tyler 25-11-13 17:35

ציטוט:

נכתב במקור על ידי Haimz (פרסם 884257)
תיישם את השיטה שאמרתי לך..

ניסיתי, אך השיטה שלך עם המסד לא יעילה כשמדובר בקוד JS...

הרי אני לוקח את הקוד ומריץ אותו בלולאת JS, אין פה שום קשר למסד בין הJS.

אתה אומר בעצם שאני אצור סוג של "הרשמה" רגילה כמו כמעט בכל אתר שתהיה מקושרת למסד, ואני אסמן בV דרך הCHECKBOX ואז זה אמור לאשר את המשתמש ולסמן לו ערך "1" בעמודת הconfirm

אך אני רוצה להריץ את אותו הקוד של המשתמש דרך לולאת JS שבין היתר גם מאשרת אותו וגם עושה פעולות אחרת כמו מצרפת אותו לרשת של בית הספר, מוסיפה חברים וכו'

Haimz 25-11-13 18:02

אז תעשה את אותה שיטה שאמרתי לגבי הCHECKBOX וברגע שאתה מקבל רשמיה של הקודים של המשתמשים, אתה יכול להציג פלט של JS.
אתה יכול להציג JS בקוד של PHP, אבל לא PHP בקוד של JS.

Tyler 25-11-13 18:26

ציטוט:

נכתב במקור על ידי Haimz (פרסם 884262)
אז תעשה את אותה שיטה שאמרתי לגבי הCHECKBOX וברגע שאתה מקבל רשמיה של הקודים של המשתמשים, אתה יכול להציג פלט של JS.
אתה יכול להציג JS בקוד של PHP, אבל לא PHP בקוד של JS.

זה מה שאני עושה
אני מציג JS בקוד של PHP, לא להפך כמובן :)

ואני אנסה את מה שאתה אומר למרות שזה נראה די מסובך וקשה לביצוע בעיקר עם כמה וכמה לולאות JS ..

ולא בדיוק הבנתי איפה בא כאן הקשר למסד?

בכ"מ לסיכום,
הרעיון שלך הוא ליצור טבלת USERS במסד לדוגמא, כך שלכל משתמש יהיה את הUSER_CODE שלו במסד.

וליצור CHECKBOX בעמוד הPHP שבו יש את הJS שאני רוצה להריץ
ברגע שאני מסמן את הCHECKBOX של משתמש כלשהו בV, הוא מריץ את הקוד שלו דרך הJS.

זה בתיאוריה?

Haimz 25-11-13 19:17

ציטוט:

נכתב במקור על ידי Tyler (פרסם 884263)
זה מה שאני עושה
אני מציג JS בקוד של PHP, לא להפך כמובן :)

ואני אנסה את מה שאתה אומר למרות שזה נראה די מסובך וקשה לביצוע בעיקר עם כמה וכמה לולאות JS ..

ולא בדיוק הבנתי איפה בא כאן הקשר למסד?

בכ"מ לסיכום,
הרעיון שלך הוא ליצור טבלת USERS במסד לדוגמא, כך שלכל משתמש יהיה את הUSER_CODE שלו במסד.

וליצור CHECKBOX בעמוד הPHP שבו יש את הJS שאני רוצה להריץ
ברגע שאני מסמן את הCHECKBOX של משתמש כלשהו בV, הוא מריץ את הקוד שלו דרך הJS.

זה בתיאוריה?

אתה לא חייב לשלב מסד, הקטע של המסד היה הרעיון שלי.

אתה יכול להשאיר את אותה הדרך שבה זה עובד עכשיו, ופשוט להוסיף את השיטה של הCHECKBOX כאשר אתה שומר את הUSER_CODE במקום הid

Tyler 27-11-13 16:17

ציטוט:

נכתב במקור על ידי Haimz (פרסם 884264)
אתה לא חייב לשלב מסד, הקטע של המסד היה הרעיון שלי.

אתה יכול להשאיר את אותה הדרך שבה זה עובד עכשיו, ופשוט להוסיף את השיטה של הCHECKBOX כאשר אתה שומר את הUSER_CODE במקום הid

אני מנסה להבין מה אתה רוצה להשיג בזה..

וגם לא הבנתי בדיוק איך לבצע את זה..

אתה הבנת איך המערכת עובדת במצב הנוכחי?

בן אדם נכנס > נרשם בטופס הרשמה בקובץ PHP מסוים > מקבל קוד ייחודי > מכניס אותו לתיבת האישור של ההרשמה > הקוד הייחודי הזה נשמר בקובץ TXT > אני נכנס לקובץ TXT ומעתיק את הקוד > מכניס אותו בלולאת JS שנמצאת בקובץ PHP אחר > המשתמש מאושר.

איפה נכנס פה הCHECKBOX שייעצת עליה? ומצטער על הNOOBיות..

zoharesh 28-11-13 03:21

קראתי הכל ואולי בגלל השעה לא הצלחתי להבין את ההיגיון שמאחורי הדברים.
מה בעצם הקוד הזה נותן למשתמש?
אם הבנתי נכון לאחר ההרשמה הוא מקבל קוד, שאותו הוא מזין שוב בתהליך ההרשמה?


כל הזמנים הם GMT +2. הזמן כעת הוא 23:57.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ