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

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

Shay Ben Moshe 15-02-09 20:47

לאן להמשיך? - תכנות
 
שלום לכם חברי הוסטס היקרים.
אני יודע XHTML , CSS ולקודד באופן תקין (http://www.exalted-web.com/?viewpage=slice)
אני יודע PHP ובניתי מספר מערכות (http://www.startgame.co.il/ , http://www.exalted-web.com/exaltedcms/). PHP למדתי מhttp://learnphp.co.il/ ומhttp://php.eitan.ac.il/main.php ואני יודע את כל החומר שם (אם כי אני קצת חלש במחלקות ובביטויים רגולרים) וכמובן שלמדתי גם הרבה מהאתר של php.net. אני יודע להשתמש בMySQL שוטף..
אני יודע בJS בעיקר לערוך דברים פשוטים וממש בסיס של JS, לא יכול להגיד שאני יודע JS.

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

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

Daniel 15-02-09 20:50

אתה רוצה להמשיך להתקדם? צריך לדעת איפה אתה. תן דוגמא לקובץ מהמערכת

Shay Ben Moshe 15-02-09 20:58

קצת בעייתי מבחינתי לשחרר יותר מדי קבצים אז אני אתן חלק קטן במערכת שאחראי על שינוי פרטי התחברות, עם כי גם הוא לא מתוחכם במיוחד. למי שתוהה זה קובץ שאני עושה לו include לתוך החלק של התוכן עצמו של הדף:
קוד:

<?php
if (isset($_POST['sent'])) {
        $update_name = $_POST['name'];
        if ($update_name != "") {
                sqlupdate("admin","username='$update_name'");
                setcookie ("login_name" , $update_name , time()+7200);
        echo <<<CONTENT
<strong>שם משתמש שונה בהצלחה!</strong>
<br />
CONTENT;
                }

        $update_pass2 = $_POST['pass2'];
        $update_pass = $_POST['pass'];
        $update_old_pass = $_POST['old_pass'];
        if ((md5($update_old_pass) == $admin_pass) && ($update_pass == $update_pass2)) {
                sqlupdate("admin","password='$update_pass'");
                setcookie ("login_pass" , md5($update_pass) , time()+7200);
        echo <<<CONTENT
<strong>סיסמה שונתה בהצלחה!</strong>
<br />
CONTENT;
                }
        elseif ($update_old_pass != "") {
                if (md5($update_old_pass) != $admin_pass) {
        echo <<<CONTENT
<strong>הסיסמה הישנה לא נכונה!</strong>
<br />
CONTENT;
                        }
                if ($update_pass != $update_pass2) {
        echo <<<CONTENT
<strong>הסיסמה החדשה לא תואמת את הסיסמה בשנית!</strong>
<br />
CONTENT;
                        }
                }
        }

echo <<<CONTENT
<form method="post" action="#">
<input type="hidden" name="sent" value="sent" />
שם המשתמש לפאנל הניהול:
<br />
<input type="text" name="name" value="" style="width: 500px;"/>
<br />
סיסמה ישנה: (להקיש רק בשינוי סיסמה)
<br />
<input type="text" name="old_pass" value="" style="width: 500px;"/>
<br />
סיסמה חדשה לפאנל הניהול:
<br />
<input type="text" name="pass" value="" style="width: 500px;"/>
<br />
סיסמה חדשה בשנית לפאנל הניהול:
<br />
<input type="text" name="pass2" value="" style="width: 500px;"/>
<br /><br />
<input type="submit" value="שלח" class="button" />
</form>
CONTENT;
?>

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

עריכה:
חוץ מזה, אני לא שואל אם אני בסדר, אני שואל לאן להמשיך, ללמוד עוד PHP, למרות שאני מסתדר עם כל דבר עד עכשיו כמעט או ללכת ונניח להתחיל ללמוד AJAX או לשבת וללמוד קצת JS. נראה לי אני אקח לי איזה שישי שבת ללמוד JS ככה חח.

O-B 15-02-09 21:27

ליעל את מה שאתה עושה..
להוציא נתונים בפחות שאליתות..
להוציא רק את הנתונים הנחוצים ולא להשתמש ב *..
להפריד בין HTML ל PHP..

כל מיני דברים כאלה..

Shay Ben Moshe 15-02-09 21:53

ציטוט:

נכתב במקור על ידי O-B (פרסם 698431)
ליעל את מה שאתה עושה.. אתה יכול להסביר ולפרט?
להוציא נתונים בפחות שאליתות.. איפה ראית פה הרבה שאילתות? במה שהעלתי יש שתי שאילתות שאחת נועדה לשנות את השם משתמש שלא דורש אימות ובשנייה סיסמה שכן דורשת אימות.
להוציא רק את הנתונים הנחוצים ולא להשתמש ב *.. בד"כ אני כן משתמש ב* כי זה יותר נוח לי לעבוד ככה, אבל לא תמיד, אני פשוט שולף רק דברים נחוצים בקוד שלי...
להפריד בין HTML ל PHP.. לא הראתי את המערכת לכן אני לא מצפה שתדע אבל יש הפרדה מוחלטת בין העיצוב/קידוד לבין המערכת עצמה, מוחלטת.

כל מיני דברים כאלה..

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

nevo 15-02-09 21:55

תלמד לעבוד עם מחלקות וקבצי עיצוב בנפרד.

Erez | TrustMedia.co.il 15-02-09 22:03

קודם תלמד מחלקות שזה דבר שכמעט חייבים לדעת
ביטויים רגיולריים גם נורא עוזר אבל לא חובה
מה שאמרו לך למעלה לייעל את הקוד שיהיה כמה שיותר קצר ושירוץ יותר מהר
וגם להפריד לגמרי את הHTML מהקוד(לא לשים שום תגית HTML בתוך הקוד!)
בהצלחה

Shay Ben Moshe 15-02-09 22:07

ציטוט:

נכתב במקור על ידי nevo (פרסם 698439)
תלמד לעבוד עם מחלקות וקבצי עיצוב בנפרד.

אם היית טורח לקרוא מה שרשמתי אמרתי שהעיצוב והאתר עצמו מופרדים לחלוטין.
הקובץ של העיצוב שמור בצורה שכזו בשם html.php (כמובן שזה לא הקובץ רק סכמה קטנה):
קוד:

<?php
echo <<<CONTENT
<html>
<head>
        <title>$sent_sitename</title>
        <meta name="keywords" content="$sent_keywords" />
        <meta name="descrption" content="$sent_descrption" />
</head>
<body>
<div class="page">
        <div class="header">
                <h1>$sent_sitename</h1>
                <h2>$sent_slogen</h2>
        </div>

        <div class="menu">
$sent_menu
        </div>

        <div class="middle">
$sent_middle
        </div>
</div>
</body>
</html>
CONTENT;
?>

ואז בקובץ PHP זה משהו כזה:
קוד:

<?php
include("global.php");

SOME SQL STUFF TO GET MENU AND PAGE

$sent_sitename = $global_sitename;
$sent_middle = $page_row['content'];
.
.
.

include("html.php")
?>

מקווה שהבנתם את הרעיון...


שכחתי לציין שאני מתכנת PHP או 4 או 5 חודשים אני לא בטוח (הייתה לי הכרות לא רעה עם VB6 שממש לא דומה לPHP קודם לכן). וHTML אני מכיר כבר כמה שנים אך לא הייתי מודע לתקנים וכל זה עד בערך הזמן שהתחלתי לתכנת גם.

בקיצור ידע בתחום יש לי פחות מחצי שנה.


עריכה:
ציטוט:

נכתב במקור על ידי EAStyle (פרסם 698443)
קודם תלמד מחלקות שזה דבר שכמעט חייבים לדעת
ביטויים רגיולריים גם נורא עוזר אבל לא חובה
מה שאמרו לך למעלה לייעל את הקוד שיהיה כמה שיותר קצר ושירוץ יותר מהר
וגם להפריד לגמרי את הHTML מהקוד(לא לשים שום תגית HTML בתוך הקוד!)
בהצלחה

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

איך אפשר לדוגמה את הקוד שהצגתי מקודם לקצר וחשוב יותר איך להוציא משם את הHTML? לאן להעביר אותו?

תודה.

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

Erez | TrustMedia.co.il 15-02-09 22:17

מחלקות מאוד עוזרות בגלל כמה סיבות ביניהם:משתני מחלקה,הגדרות מחלקה(ציבורית/פרטית),ובכללי הקוד יותר מסודר ונוח ועד שלא תנסה לא תדע

Shay Ben Moshe 15-02-09 22:20

ציטוט:

נכתב במקור על ידי EAStyle (פרסם 698448)
מחלקות מאוד עוזרות בגלל כמה סיבות ביניהם:משתני מחלקה,הגדרות מחלקה(ציבורית/פרטית),ובכללי הקוד יותר מסודר ונוח ועד שלא תנסה לא תדע

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

intercooler3819 15-02-09 22:31

קודם כל נתחיל מזה שאל תסגור תגיות PHP
אין שום הכרח לסגור אותם מכיון שהאינטרפרטר לא צריך אותם והם רק יגרמו לך לתקלות של HEADERS ALREADY SENT אם מישהו הוסיף שם איזה רווחון בסוף הקוד

תתחיל להשתמש בהערות PHPDOC

תתחיל לעבוד עם מחלקות, פריימוורקים, ותעבור כבר לPHP5.. לא ניצלת שום יתרון של PHP5 בקוד שהראת.. תלך הלאה - השפה הרבה יותר עשריה ממה שאתה יודע
למרות שהOBJECT ORIENTED בPHP נוגד הרבה עקרונות של OBJECT ORIENTED אבל זה מה יש

בנוגע לקוד.. אין לי קוד עדכני כי אני כרגע בוינדוס (הMP רץ בלינוקס..) אז הנה משהו שמצאתי מאשכול שלי פה באתר:
PHP קוד:

<?php
    
function job($id = -1)
    {
        
$this->db->select('*')->from('jobs')->where("id"$id);
        
$query $this->db->get();
        
        if (
$query->num_rows() != 1)
        {
            
show_404('job/' $id);
        }
        
        
$ab $query->row();
        
        
$temp $this->load->view('job', array('job' => &$ab), TRUE);
        
        
// get the other jobs
        
$this->db->select('*')->from('jobs')->where('id >'$ab->id)->limit(round($this->perblock 2));
        
$query $this->db->get();
        
$block = array();
        foreach (
$query->result() as $row)
        {
            
$block['job/' $row->id '/' url_title($row->title)] = $row->title;
        }
        
        
$this->db->select('*')->from('jobs')->where('id >', ($ab->id round($this->perblock 2) - 1))->limit(round($this->perblock 2));
        
$query $this->db->get();
        foreach (
$query->result() as $row)
        {
            
$block['job/' $row->id '/' url_title($row->title)] = $row->title;
        }
        
        
$block $this->load->view('block', array('title' => 'עבודות נוספות''items' => $block), TRUE);
        
        
$this->load->view('structure', array('content' => $temp'description' => $ab->title'blocks' => $block));
    }

אתה צריך לשאוף להתחיל לעבוד עם פריימוורק
אין לי ממש המלצה על פרימוורק מסוים אבל אני יתן לך סקירונת זריזה על אלה שהתנסיתי בהם
זנד - כבד ופלצני - אבל יש בו הכל - היתרון הכי חזק שלה זה שאפשר לפרק את המודולים ולהשתמש במודול אחד במקום רבים - החסרון הגדול זה שיש הרבה מה לדעת לפני שאתה מתחיל לתכנת תכלס
CODEIGNITER - פרימוורק קל ומאוד נוח - היכ יעיל שראיתי - עם הרבה פונקציות וממש כולל את הבסיס - זה טוב להתחלה כי הוא ממש קל ללמידה אבל החסרון זה שאין בו הרבה דברים מתקדמים (את הבסיס יש, דברים מתקדמים צריך לבנות לבד) יש לציין שהוא היחיד ברשימה שתומך PHP4 ברמה מלאה נכון לגרסה העכשוית
SYMPHONY - תקנו אותי אם טעיתי בשם - כלי מאוד חזק אבל יש הרבה ללמוד לדעתי
SEAGULL - הרבה מאוד פונקציות אפילו יותר מזנד אבל שוב יש הרבה ללמוד
CAKEPHP - אממ דיי קומבינטורי - יש שם מנגנון BAKE שמזכיר קצת RUBY ON RAILS שמאפשר לך לצייר סכמת מסד נתונים והוא כבר יכתוב לך את המודולים הבסיסים שאתה צריך.. זה חוסך קוד לאללה ואתה יכול תוך 10 דקות כבר לכתוב מערכת שרצה.. החסרון זה שיש גם הרבה מה ללמוד - מבחינת ריצה הוא לא כ'כ כבד אבל לא קל

תתחיל לעבוד עם XML וסוגי אחסון נתונים כמו YAML, JSON, CSV, INI וכו'

XML RPC - תקרא קצת על זה

תלמד בגדול איך עובד כל העניין של הבקשות HTTP - איך הדברים עובדים לעומק.. איך הדברים רצים

תלמד קצת על הסביבת עבודה בכלל - תחליפים לאפאצ'י (LIGHTTPD וכו'), שרתים אחרים וקונפיגורציות אחרות
גם פניה למקורות חיצוניים מתוך PHP ושימוש בPEAR, דוגמא קלאסית לשימוש שיצא לי לעשות - אתה מזין כתובת אתר, PHP פותח פיירפוקס עם אותו אתר ומצלם את המסך ומחזיר לך תמונה של איך הוא נראה בפיירפוקס - לא מסובך ויעיל..

מסדי נתונים אחרים מMYSQL - לדוגמא SQLITE, פוסטגרס וכו' - סוגי אחסון מידע וכו'

CRON JOBS, ביוטיים רגולרים

מנועי חיפוש - SEARCH LUCENE (תריץ חיפוש בגוגל זה במקור כתוב לJAVA אבל זנד כתבו אימפלמנטציה של זה לPHP במודול ZEND_SEARCH_LUCENE אני כמעט בטוח שזה השם)

ייעול מסדי נתונים - יצירת טבלאות RELATIONS, אינדקסים INDEXES, עמודות מפתח ועמודות UNIQUE, שאילתות חיבור ושאיבה, SUB QUERIES, שאילתות עם רגולר אקספרשנס (מתאפשר בMYSQL הכי עדכני עם האופרטור regexp שמקבל בתור אופרנד את הביטוי)

הייתי מציע לך לנסות לעבוד בעיקר עם דברים מוכנים כמו מערכות ניהול טמפלטים - SMARTY וכו', מודולים כמו EASY COMPONENTS, מערכת OPEN SOURCE - ג'ומלה, דרופל, WORDPRESS והלאה (הבנה של כל העניין של HOOKS ואיך להשתמש בהם)


יש עוד כל כך הרבה דברים שאני יכול לכתוב - חבל על הזמן - תתחיל ללמוד וזה יבוא עם הזמן ועם הצורך יותר נכון

בהצלחה לך (:

Shay Ben Moshe 15-02-09 22:41

אחי, אני מרגיש שאני לא למדתי כמעט כלום חח, ואני יודע שזה גם די נכון. אני לא יודע את ההבדלים בין PHP 5 ל4, מצד שני אני כן משתמש בהערות, ברוב הקבצים, פשוט הקובץ הזה לא דורש הערות אבל כל שאר הקבצים כמעט כן קיבלו הערות, לא יודע אם כמו שאתה מצפה. אני לא מוצא לצערי איפה ללמוד וזו הבעיה העיקרית.
אם מישהו יוכל להביא לי מקור טוב למצוא מידע ומקורות ללמוד, ואל תביאו לי את גוגל כי אם כל הערצה שלי לגוגל לפעמים קשה מאוד למצוא שם מקור שמלמד PHP כמו שצריך. כמובן שאין לי בעיה עם אנגלית.

אני אשמח אם תוכל להתחבר למסן (ניצן) - כן, יש לי אותך...

Shon12 15-02-09 22:42

ציטוט:

נכתב במקור על ידי nitsanbn (פרסם 698450)
קודם כל נתחיל מזה שאל תסגור תגיות PHP
אין שום הכרח לסגור אותם מכיון שהאינטרפרטר לא צריך אותם והם רק יגרמו לך לתקלות של HEADERS ALREADY SENT אם מישהו הוסיף שם איזה רווחון בסוף הקוד

תתחיל להשתמש בהערות PHPDOC

תתחיל לעבוד עם מחלקות, פריימוורקים, ותעבור כבר לPHP5.. לא ניצלת שום יתרון של PHP5 בקוד שהראת.. תלך הלאה - השפה הרבה יותר עשריה ממה שאתה יודע
למרות שהOBJECT ORIENTED בPHP נוגד הרבה עקרונות של OBJECT ORIENTED אבל זה מה יש

בנוגע לקוד.. אין לי קוד עדכני כי אני כרגע בוינדוס (הMP רץ בלינוקס..) אז הנה משהו שמצאתי מאשכול שלי פה באתר:
PHP קוד:

<?php
    
function job($id = -1)
    {
        
$this->db->select('*')->from('jobs')->where("id"$id);
        
$query $this->db->get();
        
        if (
$query->num_rows() != 1)
        {
            
show_404('job/' $id);
        }
        
        
$ab $query->row();
        
        
$temp $this->load->view('job', array('job' => &$ab), TRUE);
        
        
// get the other jobs
        
$this->db->select('*')->from('jobs')->where('id >'$ab->id)->limit(round($this->perblock 2));
        
$query $this->db->get();
        
$block = array();
        foreach (
$query->result() as $row)
        {
            
$block['job/' $row->id '/' url_title($row->title)] = $row->title;
        }
        
        
$this->db->select('*')->from('jobs')->where('id >', ($ab->id round($this->perblock 2) - 1))->limit(round($this->perblock 2));
        
$query $this->db->get();
        foreach (
$query->result() as $row)
        {
            
$block['job/' $row->id '/' url_title($row->title)] = $row->title;
        }
        
        
$block $this->load->view('block', array('title' => 'עבודות נוספות''items' => $block), TRUE);
        
        
$this->load->view('structure', array('content' => $temp'description' => $ab->title'blocks' => $block));
    }

אתה צריך לשאוף להתחיל לעבוד עם פריימוורק
אין לי ממש המלצה על פרימוורק מסוים אבל אני יתן לך סקירונת זריזה על אלה שהתנסיתי בהם
זנד - כבד ופלצני - אבל יש בו הכל - היתרון הכי חזק שלה זה שאפשר לפרק את המודולים ולהשתמש במודול אחד במקום רבים - החסרון הגדול זה שיש הרבה מה לדעת לפני שאתה מתחיל לתכנת תכלס
CODEIGNITER - פרימוורק קל ומאוד נוח - היכ יעיל שראיתי - עם הרבה פונקציות וממש כולל את הבסיס - זה טוב להתחלה כי הוא ממש קל ללמידה אבל החסרון זה שאין בו הרבה דברים מתקדמים (את הבסיס יש, דברים מתקדמים צריך לבנות לבד) יש לציין שהוא היחיד ברשימה שתומך PHP4 ברמה מלאה נכון לגרסה העכשוית
SYMPHONY - תקנו אותי אם טעיתי בשם - כלי מאוד חזק אבל יש הרבה ללמוד לדעתי
SEAGULL - הרבה מאוד פונקציות אפילו יותר מזנד אבל שוב יש הרבה ללמוד
CAKEPHP - אממ דיי קומבינטורי - יש שם מנגנון BAKE שמזכיר קצת RUBY ON RAILS שמאפשר לך לצייר סכמת מסד נתונים והוא כבר יכתוב לך את המודולים הבסיסים שאתה צריך.. זה חוסך קוד לאללה ואתה יכול תוך 10 דקות כבר לכתוב מערכת שרצה.. החסרון זה שיש גם הרבה מה ללמוד - מבחינת ריצה הוא לא כ'כ כבד אבל לא קל

תתחיל לעבוד עם XML וסוגי אחסון נתונים כמו YAML, JSON, CSV, INI וכו'

XML RPC - תקרא קצת על זה

תלמד בגדול איך עובד כל העניין של הבקשות HTTP - איך הדברים עובדים לעומק.. איך הדברים רצים

תלמד קצת על הסביבת עבודה בכלל - תחליפים לאפאצ'י (LIGHTTPD וכו'), שרתים אחרים וקונפיגורציות אחרות
גם פניה למקורות חיצוניים מתוך PHP ושימוש בPEAR, דוגמא קלאסית לשימוש שיצא לי לעשות - אתה מזין כתובת אתר, PHP פותח פיירפוקס עם אותו אתר ומצלם את המסך ומחזיר לך תמונה של איך הוא נראה בפיירפוקס - לא מסובך ויעיל..

מסדי נתונים אחרים מMYSQL - לדוגמא SQLITE, פוסטגרס וכו' - סוגי אחסון מידע וכו'

CRON JOBS, ביוטיים רגולרים

מנועי חיפוש - SEARCH LUCENE (תריץ חיפוש בגוגל זה במקור כתוב לJAVA אבל זנד כתבו אימפלמנטציה של זה לPHP במודול ZEND_SEARCH_LUCENE אני כמעט בטוח שזה השם)

ייעול מסדי נתונים - יצירת טבלאות RELATIONS, אינדקסים INDEXES, עמודות מפתח ועמודות UNIQUE, שאילתות חיבור ושאיבה, SUB QUERIES, שאילתות עם רגולר אקספרשנס (מתאפשר בMYSQL הכי עדכני עם האופרטור regexp שמקבל בתור אופרנד את הביטוי)

הייתי מציע לך לנסות לעבוד בעיקר עם דברים מוכנים כמו מערכות ניהול טמפלטים - SMARTY וכו', מודולים כמו EASY COMPONENTS, מערכת OPEN SOURCE - ג'ומלה, דרופל, WORDPRESS והלאה (הבנה של כל העניין של HOOKS ואיך להשתמש בהם)


יש עוד כל כך הרבה דברים שאני יכול לכתוב - חבל על הזמן - תתחיל ללמוד וזה יבוא עם הזמן ועם הצורך יותר נכון

בהצלחה לך (:

מילים כדורבנות :)
יש כל-כך הרבה דברים... אל תיהיה פרמטיבי כמו שניצן אמר...תתקדם עם השפה (עם העידכונים שלה) זה רק יועיל לך!

בהצלחה :)!

Shay Ben Moshe 15-02-09 22:46

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

intercooler3819 15-02-09 23:16

אממ לא הוןספתי אבל
תתנסה עם לינוקס.. איך הכל עובד.. איך עובד הקונספט של הגישות ואבטחה בכללי בלינוקס
מודולים באפאצ'י (MOD_REWRITE, MOD_AUTH ויש עוד הרבה מאוד כאלה..)
שימוש במודולים של הAPACHE יחד עם PHP
WILDCARDS - יתרונות חסרונות ואיך להשתמש
קאשינג ויעילות - OPCODE CACHE וכד' בעיקר MEMCACHED, APC, EACCELERATOR

כמובן שבלי קשר לPHP כדאי לדעת על מערכת הסשנים של PHP, איך היא עובדת אוטנטיקציה של הסשנים ובדיקה עם מסד בהשוואת דפדפן, איפי והאשים
כמובן כדאי לדעת איך לעבוד עם TOKENS ולמה הם טובים (CSRF/XSRF בעיקר)

תלמד (אם יש לך ראש - למרות שזה לא ממש קשור) איך להשתמש בPHP לא בהכרח לWEB - דוגמא קלאסית: המייל סרבר באחד מהמקומות שעבדתי בהם היה כתוב בPHP =>

הייתי מציע לך ללמוד קצת PERL אבל זה סתם כי יש לי קצת חיבה לפרל =>


בגדול אין לך ממש לאן ללכת - פשוט תעשה מה שאתה יודע ותשאף לשפר את הקוד

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

זהו בגדול

לא ציינתי אבל רצוי שתצלמד 1 או שתים JS LIBRARIES כמו DOJO או MOOTOOLS או JQUERY (אני מחבב את מוטולס למרות שJQUERY ממש נוח) לבניית ממשקי WEB

בהצלחה לך

Adir 16-02-09 15:41

ציטוט:

נכתב במקור על ידי nitsanbn (פרסם 698457)
השאיפה שלך בגדול צריכה להיות לקוד מודולארי, יעיל, נוח לעריכה, קוד שאם יפתח תכנת אחר עוד שנתים וחצי הוא ידע להמשיך לכתוב אותו

גם אני מתכנת(אומרים מתכנת או תכנת?) לא בסביבת Linux אלא יותר בכיוון של Windows, .net |קורץ|
בזמן האחרון אני מנסה לחשוב איך ליעל את הקוד שלי.
אני רוצה לכתוב CMS מודולרית כמה שיותר, שאני אוכל להשתמש בה למספר אתרים ולא רק לאתר אחד.
הבעיה שאני לא מוצא מידע על הנושא, אני לא צריך מדריך Step by step שמראה בדיוק מה עושים, אני צריך להבין את הבסיס, איך מערכת מודולרית עובדת וצריכה להיות בנויה.

מכיר מקום טוב שמלמד על הנושא?(כן, חיפשתי בגוגל)

intercooler3819 16-02-09 15:53

אין דבר כזה STEP BY STEP.. גם אני לא למדתי לתכנת STEP BY STEP..
הדבר היחיד שאני יכול לומר לך זה לחפש עוד בגוגל =>
אם לא מצאת כנראה שלא חיפשת מספיק טוב

Adir 16-02-09 16:02

ציטוט:

נכתב במקור על ידי nitsanbn (פרסם 698511)
אין דבר כזה STEP BY STEP.. גם אני לא למדתי לתכנת STEP BY STEP..

בגלל זה אמרתי שאני לא רוצה מדריך כזה ^^

intercooler3819 16-02-09 19:16

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

קודם כל אני חושב שכדאי להתחיל ממשהו מוכן.. תמיד אם יש לך אפשרות תתבסס על משהו מוכן ואל תתחיל לכתוב מאפס (על פרויקט קודם שלך על מערכת מוכנה על משהו ששלחו לך על משהו שמצאת - כל דבר עם שורשים טובים יכול להיות בסיס טוב למערכת גדולה)
תכתוב קוד מודולארי - קוד שתוכל לעדכן בעתיד, שעוד חצי שנה תרצה ל שפר תוכל
פרק את הדברים לפונקציות - כמה שיותר פונקציות
תהיה הגיוני עם הכמות של הפונצקיות אבל הגיוני גם בשימושיות שלהם, אין צורך להפריד כל דבר לפונקציות אבל הפרדה כזו תיתן לך יותר כוח - כמובן שלא להגזים ולהיות קיצונים
שימוש בפונקציות - תנסה ליישם כמה שיותר פונקציות בתוך פונקציות אחרות ככה שלבסוף הראשי שלך רק יגע בפונקציות ולא יגע במסד נתונים
השאיפה שלך צריכה להיות כזאת - אתה צריך לשאוף להפרדה בין הפלט (HTML וכו') לבין הקוד הראשי לבין הגישה לדטאביס
[להפרדה הזו קוראים MVC בדרך כלל - MODEL VIEW CONTROLLER
כאשר VIEW אלו הקבצי פלט שלך (HTML, שפות, AJAX, JAVASCRIPT, תמונות והלאה)
MODEL - פונקציות ומחלקות שרק הם ורק הם מבצעות עיבודים וניגשות לדטאביס
CONTROLLER - הקוד הראשי שלך - השאיפה שלך היא שבקונטרולר אתה תיגש רק לפונקציות ומחלקות בMODEL ובVIEW
הקונטרולר אמור למעשה להשתמש בתוצאות של הMODEL וליישם אותם בVIEW
כאשר הVIEW רק כולל הצגה של המידע - אבל לא בהכרח סטאטית - לדוגמא אם תרצה להדפיס 10 שורות אחרונות מטבלה מסוימת אתה לא תבצע הדפסה 10 פעמים בקונטרולר, אלא תשלח לVIEW אוביקט עם כל עשרת האוביקטים הקטנים שכל אחד מייצג שורה ובVIEW תהיה לולאה שתדפיס את הערכים - אתה מבין?

אני יכול להמשיך ולהמשיך אבל באמת שאין טעם

תנסה לכתוב קוד ותשפר אותו ותשפר אותו
מתישהו אתה תראה שאתה תנסה כמה שיותר ליצור את ההפרדות האלה בעצמך (מבלי שאפילו תקרא את מה שכתבתי) ותפרק בעצמך ותראה עד כמה זה נוח

בהצלחה ולהת'

A.M.F 16-02-09 19:52

מחזק את ניצן, תעבוד בסביבת עבודה של codeigniter

AlmogBaku 16-02-09 19:56

ניצן כתב לך פה על הרבה דברים נהדרים שאפשר ללמוד.
אומנם אני לא מסכים עם הכל(אהם, מה לעזאזל המחלקה המעצבנת הזו של ה SQL?? אם כבר אז PDO)


עקרונית- במצב שלך הייתי מתחיל עם משהו הרבה יותר בסיסי-
רכישת ניסיון.


אתה אומר שאתה יודע ויודע ויודע, אך הקוד שלך לא מראה שאתה יודע ויודע ויודע.
תעבוד יותר מסודר ויותר נקי-
החל מאימות משתמש בSQL ולא ב PHP
וכלה בשבירת סטרינגים כדי להכניס משתנים.


פשוט ניסיון, זו מילת המפתח.

intercooler3819 16-02-09 20:29

מה קורה אלמוג =>
קבא 55 דפר 80 - מחכה לזימונים P:

ובחזרה לנושא
על איזה מחלקה מעצבנת אתה מדבר חח? לא דיברתי על שום מחלקה לדטאביס
וPDO זה נחמד אבל יש יותר נוחים P: (לא יודע למה אני שנוא PREPARED STATEMENTS)

Shay Ben Moshe 16-02-09 21:46

ציטוט:

נכתב במקור על ידי Baku (פרסם 698573)
ניצן כתב לך פה על הרבה דברים נהדרים שאפשר ללמוד.
אומנם אני לא מסכים עם הכל(אהם, מה לעזאזל המחלקה המעצבנת הזו של ה SQL?? אם כבר אז PDO)


עקרונית- במצב שלך הייתי מתחיל עם משהו הרבה יותר בסיסי-
רכישת ניסיון.


אתה אומר שאתה יודע ויודע ויודע, אך הקוד שלך לא מראה שאתה יודע ויודע ויודע.
תעבוד יותר מסודר ויותר נקי-
החל מאימות משתמש בSQL ולא ב PHP
וכלה בשבירת סטרינגים כדי להכניס משתנים.


פשוט ניסיון, זו מילת המפתח.

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

SELECT FROM admin WHERE name='$post_name'pass='$post_pass' 

ניתן יהיה בקלות להזריק דרך הpost קוד כמו ' or a='a וזה פשוט עוקף את זה. אז אמרתי לעצמי, למה לא לעשות את האימות בPHP שזה השוואה של שתי מחרוזות? זה הרבה יותר מאובטח ככה.

חוץ מזה לא ראית מערכת, ראית קטע קטן ממערכת. ולפי מה זה לא נקי ולא מסודר? אתה לא מסביר אתה מה שאתה אומר, במיוחד שזה לא נכון. הקוד שלי דווקא כן מסודר, ולזה אני מודע בוודאות.

Elad-A 16-02-09 22:36

ציטוט:

נכתב במקור על ידי The Chosen Generl (פרסם 698598)
אני לא יודע מה אתה יודע שאני לא יודע אבל אני למדתי שאם אני אשים קוד שכזה:
PHP קוד:

SELECT FROM admin WHERE name='$post_name'pass='$post_pass' 

ניתן יהיה בקלות להזריק דרך הpost קוד כמו ' or a='a וזה פשוט עוקף את זה. אז אמרתי לעצמי, למה לא לעשות את האימות בPHP שזה השוואה של שתי מחרוזות? זה הרבה יותר מאובטח ככה.

חוץ מזה לא ראית מערכת, ראית קטע קטן ממערכת. ולפי מה זה לא נקי ולא מסודר? אתה לא מסביר אתה מה שאתה אומר, במיוחד שזה לא נכון. הקוד שלי דווקא כן מסודר, ולזה אני מודע בוודאות.

אתה אמור לאבטח את המשתנים לפני שהם מגיעים לשאילתה..
במקרה הנוכחי, mysql_escape_string יספיק.

vadimg88 16-02-09 22:47

ציטוט:

4.3.0 This function became deprecated, do not use this function. Instead, use mysql_real_escape_string()
תשתמש ב mysql_real_escape_string גם לפותח האשכול וגם לאלעד.

Shay Ben Moshe 16-02-09 22:52

אוקי תודה לכם.

Elad-A 16-02-09 23:16

ציטוט:

נכתב במקור על ידי vadimg88 (פרסם 698624)
תשתמש ב mysql_real_escape_string גם לפותח האשכול וגם לאלעד.

כן, זה ידוע :)
תודה על ההערה בכל זאת.

Adir 17-02-09 12:26

ציטוט:

נכתב במקור על ידי nitsanbn (פרסם 698560)
ממ אם אתה ממש רוצה בסיס אז ככה.. אני מקוה שאני לא יברח לדברים אחרים פשוט יש כ'כ הרבה עקרונות שצריך לישם בדבר כזה

קודם כל אני חושב שכדאי להתחיל ממשהו מוכן.. תמיד אם יש לך אפשרות תתבסס על משהו מוכן ואל תתחיל לכתוב מאפס (על פרויקט קודם שלך על מערכת מוכנה על משהו ששלחו לך על משהו שמצאת - כל דבר עם שורשים טובים יכול להיות בסיס טוב למערכת גדולה)
תכתוב קוד מודולארי - קוד שתוכל לעדכן בעתיד, שעוד חצי שנה תרצה ל שפר תוכל
פרק את הדברים לפונקציות - כמה שיותר פונקציות
תהיה הגיוני עם הכמות של הפונצקיות אבל הגיוני גם בשימושיות שלהם, אין צורך להפריד כל דבר לפונקציות אבל הפרדה כזו תיתן לך יותר כוח - כמובן שלא להגזים ולהיות קיצונים
שימוש בפונקציות - תנסה ליישם כמה שיותר פונקציות בתוך פונקציות אחרות ככה שלבסוף הראשי שלך רק יגע בפונקציות ולא יגע במסד נתונים
השאיפה שלך צריכה להיות כזאת - אתה צריך לשאוף להפרדה בין הפלט (HTML וכו') לבין הקוד הראשי לבין הגישה לדטאביס
[להפרדה הזו קוראים MVC בדרך כלל - MODEL VIEW CONTROLLER
כאשר VIEW אלו הקבצי פלט שלך (HTML, שפות, AJAX, JAVASCRIPT, תמונות והלאה)
MODEL - פונקציות ומחלקות שרק הם ורק הם מבצעות עיבודים וניגשות לדטאביס
CONTROLLER - הקוד הראשי שלך - השאיפה שלך היא שבקונטרולר אתה תיגש רק לפונקציות ומחלקות בMODEL ובVIEW
הקונטרולר אמור למעשה להשתמש בתוצאות של הMODEL וליישם אותם בVIEW
כאשר הVIEW רק כולל הצגה של המידע - אבל לא בהכרח סטאטית - לדוגמא אם תרצה להדפיס 10 שורות אחרונות מטבלה מסוימת אתה לא תבצע הדפסה 10 פעמים בקונטרולר, אלא תשלח לVIEW אוביקט עם כל עשרת האוביקטים הקטנים שכל אחד מייצג שורה ובVIEW תהיה לולאה שתדפיס את הערכים - אתה מבין?

אני יכול להמשיך ולהמשיך אבל באמת שאין טעם

תנסה לכתוב קוד ותשפר אותו ותשפר אותו
מתישהו אתה תראה שאתה תנסה כמה שיותר ליצור את ההפרדות האלה בעצמך (מבלי שאפילו תקרא את מה שכתבתי) ותפרק בעצמך ותראה עד כמה זה נוח

בהצלחה ולהת'

תודה על המידע, רואים שאתה מבין בזה :-)
אני רוצה לדעת עוד על מערכת plugins.
כמו בDotNetNuke או בהרבה CMSים אחרים, אפשר להוריד נגיד קובץ ZIP ולהתקין אותו על ידי הפאנל ולהוסיף את הפונקציונאליות שלו לתוך אתר.

Slash 17-02-09 15:27

בתור מתכנת בעל עבר עשיר בהרבה שפות ,
יצא לי להעשיר את הידע מהתגובות של אנשים פה .

אז נשאר לי רק להגיד , תודה . :)

intercooler3819 17-02-09 18:19

ציטוט:

נכתב במקור על ידי Adir|HomeServ.co.il (פרסם 698690)
תודה על המידע, רואים שאתה מבין בזה :-)
אני רוצה לדעת עוד על מערכת plugins.
כמו בDotNetNuke או בהרבה CMSים אחרים, אפשר להוריד נגיד קובץ ZIP ולהתקין אותו על ידי הפאנל ולהוסיף את הפונקציונאליות שלו לתוך אתר.

אממ תראה באמת שאני לא תותח C#, וגם אני לא מתיימר להיות (יודע C# על כל בוריה אבל לא יצא לי לפתח משהו וגם את האמת לא רוצה - רק OPEN SOURCE |קורץ| ), אבל בגדול אני יכול לתת לך סקירונת על איך התהליך עובד

פלאגינים הם למעשה תוספות, השאיפה שלך בכתיבת מערכת פלאגינים היא שהפלאגינים ידעו להשתלב במערכת הבסיסית בלי לפגום בה - כלומר אם תרצה לשפר את ההרשמה תוכל לעשות את זה מבלי לפגוע בקוד ולכתוב את הפלאגינים HARDCODED מה שנקרא
שאיפה נוספת שלך זה כמו שיותר מודולאריות כלומר כאשר תעדכן גרסה של המערכת כמה שיותר פלאגינים ימשיכו לפעול (תאימות לאחורה) ותוכל לעדכן גרסה מבלי לחשוש שהפלאגינים ימותו

אתה משיג את הדברים האלה בעזרת מספר נקודות חשובות שיש להתיחס אליהם בזמן הפיתוח:
הוקים - HOOKS - אממ לא יודע איך לומר את זה בעברית, בגדול אתה צריך ליצור מערכת HOOKS שמה שהיא עושה זה למעשה EVALUATE() לקוד של הפלאגין שאמור להכנס באותו מקום

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

מערכת דיבאגינג - עדיף לכתוב מערכת דיבאגינג לפחות ברמת הבסיס (סוג של SCAFFOLDING ) שתציג מה קורה בכל HOOK ותיתן למפתח אפשרות לדבג את הפלאגין שלו מבלי לגעת בקוד המקור - לא יודע אם אנשים נורמלים היו עושים את זה אבל עקב חיבה מיותרת לפיירפוקס הייתי יוצר INSTANCE של המחלקה של FIREPHP ונותן לאנשים לדבג איתה (:

מערכת פלאגינים לאזור ניהול - כתיבת אפשרות נוחה ליצירת עמודי ניהול חדשים, עדיפות לתת טבלאת אקסטרה להגדרות קבועות של הפלאגינים - עוד רגע אסביר לעומק

תהליך ההוספה וההסרה של פלגינים
בדיוק לפני מספר ימים יצא לי לכתוב פלאגין לWORDPRESS אז יש לי כמה דברים להוסיף בנוסף לנאום הקבוע..

נקודות חשובות במערכת בנוגע להוספה:
* כדי ליצור טבלאת משתנים שלמעשה תהיה במבנה כזה שכל שורה תקבל ID, NAME, VALUE
וכמובן UNIQUE NAME וID AUTO INCREMENT
כאשר הטבלה הזו מיועדת להחזיק ערכים כמו משתנים לדוגמא
$a = 2;
אז בדטאבייס נחזיק בNAME את a ובVALUE את 2
אולי אפשר להחזיק עוד עמודה לסוג המידע

אחרכך יש לכתוב פונקציות להוספה של אופציחות לטבלה הזו ולשאיבה שלהם ולתת אופציה להשתמש בהם בפלאגינים

* עמודי ניהול
השיטה הכי נוחה ליצירת עמודי ניהול היא לתת כמה שיותר כוח - כוח ניתן בגישה מלאה - אין צורך ליצור (לפחות לדעתי) API לכתיבת עמודי ADMIN, אלא פשוט לבצע את זה באופן הבא:
פונקציה A מחזיקה את התוכן של הADMIN PAGE, פונקציה B היא פונקציה שמוגדרת בAPI שכאשר אתה קורא לה כך:
B('A', 'Menu Link Text', 'Page Title');
היא יוצרת עמוד חדש בעל לינק בתפריט שהוא כמו שהוזן וכותרת כמו שהוזנה
כל שאר העמוד נוצר לאחר הרצה של הפונקציה A שהוזנה לפונקציה B שהיא כמובן מהAPI שכתבנו

תהליך ההתקנה
כאשר אתה מתקין פלאגין צריכים להיות מספר שלבים - כמובן שאפשר לשנות את זה ולALTER את זה כמה שתרצה (שוב - זה לפי מה שאני היתי עושה.. UP TO YOU)

העלאת הקבצים
צריכה להיות תיקית פלאגינים בשרת שאף אחד מלבד הקוד עצמו לא יכול לגשת אליה - אם ממש רוצים לחסום אפשר למקם מחוץ לתיקית הHTTP אבל HTACCESS יעשה את העבודה

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

<?php
/*
name: abcd
author: abcddd
website: abcdsfds
*/

// your code goes right here

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

ברגע של הוספת הפלאגין אתה תגדיר HOOK מסוים וברגע של ההסרה עוד HOOK

ברגע ההתקנה אתה תכתוב בפלאגין שלך קוד שיורץ כאשר נגיע לHOOK של ההתקנה
(יצור טבלאות מסד נתונים יכניס דברים לזיפ יוסיף הגדרות לטבלאת המשתנים שהזכרתי קודם והלאה והלאה)

לאחר מכן הכנסתי את הפלאגין
בנוסף המערכת עצמה למען מערכת ניהול בפלאגינים תוסיף לטבלאת הפלגינים כי הפלאגין בעל שם הקובץ XYZA.PHP נוסף וכאשר תחזור לעמוד הצגת ההתקנות/הסרות תוכל לראות כי הפלאגין מסומן כפלאגין שמותקן

מכאן והלאה הפלאגין מתפקד עם הHOOKS של המערכת לכל בוריה ויכול לגשת לכל דבר

רצוי לספק בAPI את הROOTPATH של התיקיית פלאגינים למען גישה לוקאלית (להעלאת קבצים וכו') וגם URL מלא לכתובת האתר וURL לפאנל הניהול שמכאן הפלאגין ידע לנהל את עצמו לבד

בתהליך ההסרה של הפלאגין מה שיקרה זה כשיגיע האינטרפרטר לHOOK של ההסרה הוא יריץ את קוד ההסרה של הפלאגין שלפני כן בפלאגין עצמו ביצענו ASSIGNMENT לפונקציית הסרה שכתבנו אל תוך הHOOK הזה וככה הוא יוסר
מאותו הרגע נסיר אותו גם מטבלאת הפלגינים וכרגע הוא יוצג בתור פלאגין שלא מותקן

קבצי הפלאגין ישארו בשרת - באמת שהם לא מפריעים לאף אחד |קורץ|


אני הייתי עושה כמה שיפוצים אבל זאת הגישה הכי חכמה לכתיבת מערכת פלאגינים

אני בטוח שיש פה חזרות שכתבתי ודברים שנכתבו לא טוב וכו' - אני לא ספץ עברית וגם קצת ישן כרגע

בהצלחה לך (:

AlmogBaku 18-02-09 13:07

יש כמה אפשרויות לפתח פלאגינים, אבל כל הרעיון הוא לפתח אלגוריתמים.
אני אישית בחרתי להשתמש במערכת פלאגינים מבוססת SQL ולא HOOKS- מה שהסתבר בדיעבד בברוך רציני. אומנם כך זה יותר מאובטח, אבל ממש קשה לבנות דבר כזה[מבחינת פיתוח פלאגינים זה אפילו קל יותר משיטת ה HOOKS].

אבל חוץ מפלגינים יש דברים מסובכים הרבה יותר, למשל מערכת VirtualCron[לקח לי כמה ימים רק לחשוב על אלגוריתם, ונשברתי מלא פעמים באמצע, בקיצור- לקח יותר מידי זמן להצליח] או למשל מערכת להצפנת קוד PHP , שזה לא כל כך פשוט כמו שזה נראה..
או מחלקות לעיבודים של תמונה- המרה לסוג JPEG, הקטנה של תמונות, שמירה על פורפורציות, יצירת מסגרות מעוגלות וכו'..

ובאופן אישי, אני לא ממליץ לך לנסות את זה, אתה לא בשל לזה.


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



אגב, לגבי בדיקת המשתמש- אומנם ענו לך פה יפה עם הפתרון, אבל לא לגמרי. זו הדרך בה אני הייתי בוחר לבדוק:
PHP קוד:

/**
 * Check id user is vaild
 *
 * @param string $username
 * @param md5 $password
 * @return TRUE if exits, or FALSE if not exits.
 */
function check_user($username=""$password="") {
    
$username     htmlspecialchars($usernameENT_QUOTES);
    
$username     mysql_real_escape_string($username);
    
    
$password     mysql_real_escape_string($password);
    
$query        ""
            
."SELECT count(*) as `avilable` FROM `prefix_users` WHERE \n"
            
."    `username` = '" $username "', \n"
            
."    `password` = '" $password "';";

    
$result        mysql_query($query) or die("<u>E</u>rror: " mysql_error());
    
$avilable    mysql_fecth_assoc($result);
    
$avilable    $avilable['avilable'];
    
    if(
$avilable>0) return true;
    else return 
false;



Adir 18-02-09 14:34

ציטוט:

נכתב במקור על ידי Baku (פרסם 698905)
ובאופן אישי, אני לא ממליץ לך לנסות את זה, אתה לא בשל לזה.

למה לא ? ^^
מאיפה אתה יודע מה הידע והניסיון שלי?(אגב, אני לא פתחתי את האשכול הזה)

AlmogBaku 18-02-09 14:58

ציטוט:

נכתב במקור על ידי Adir|HomeServ.co.il (פרסם 698924)
למה לא ? ^^
מאיפה אתה יודע מה הידע והניסיון שלי?(אגב, אני לא פתחתי את האשכול הזה)

לפי הקוד שהוא הציג, והשאלות שהוא שאל. הסיכוי שהוא יצליח לפתח מערכת VirtualCron למשל היא מאוד נמוכה.. אלו מערכות מאוד מורכבות..

Shay Ben Moshe 18-02-09 15:40

ציטוט:

נכתב במקור על ידי Baku (פרסם 698930)
לפי הקוד שהוא הציג, והשאלות שהוא שאל. הסיכוי שהוא יצליח לפתח מערכת VirtualCron למשל היא מאוד נמוכה.. אלו מערכות מאוד מורכבות..

אני מניח שאני לא אוכל לפתח מערכות ברמה.
מצד שני אני אומר לך שאני מסוגל לבנות כל מערכת ניהול, פורומים, בלוגים וכאלה, עם כי רוב הסיכויים שהיא לא תיהיה כל כך דינאמית ושהיא תיהיה לא כ"כ יעילה.

Adir 18-02-09 15:55

ציטוט:

נכתב במקור על ידי Adir|HomeServ.co.il (פרסם 698924)
למה לא ? ^^
מאיפה אתה יודע מה הידע והניסיון שלי?(אגב, אני לא פתחתי את האשכול הזה)

ציטוט:

נכתב במקור על ידי Baku (פרסם 698930)
לפי הקוד שהוא הציג, והשאלות שהוא שאל. הסיכוי שהוא יצליח לפתח מערכת VirtualCron למשל היא מאוד נמוכה.. אלו מערכות מאוד מורכבות..

לא דיברתי עליו, דיברתי עלי

Daniel 18-02-09 16:10

ציטוט:

נכתב במקור על ידי The Chosen Generl (פרסם 698424)
קצת בעייתי מבחינתי לשחרר יותר מדי קבצים אז אני אתן חלק קטן במערכת שאחראי על שינוי פרטי התחברות, עם כי גם הוא לא מתוחכם במיוחד. למי שתוהה זה קובץ שאני עושה לו include לתוך החלק של התוכן עצמו של הדף:
קוד:

<?php
if (isset($_POST['sent'])) {
        $update_name = $_POST['name'];
        if ($update_name != "") {
                sqlupdate("admin","username='$update_name'");
                setcookie ("login_name" , $update_name , time()+7200);
        echo <<<CONTENT
<strong>שם משתמש שונה בהצלחה!</strong>
<br />
CONTENT;
                }

        $update_pass2 = $_POST['pass2'];
        $update_pass = $_POST['pass'];
        $update_old_pass = $_POST['old_pass'];
        if ((md5($update_old_pass) == $admin_pass) && ($update_pass == $update_pass2)) {
                sqlupdate("admin","password='$update_pass'");
                setcookie ("login_pass" , md5($update_pass) , time()+7200);
        echo <<<CONTENT
<strong>סיסמה שונתה בהצלחה!</strong>
<br />
CONTENT;
                }
        elseif ($update_old_pass != "") {
                if (md5($update_old_pass) != $admin_pass) {
        echo <<<CONTENT
<strong>הסיסמה הישנה לא נכונה!</strong>
<br />
CONTENT;
                        }
                if ($update_pass != $update_pass2) {
        echo <<<CONTENT
<strong>הסיסמה החדשה לא תואמת את הסיסמה בשנית!</strong>
<br />
CONTENT;
                        }
                }
        }

echo <<<CONTENT
<form method="post" action="#">
<input type="hidden" name="sent" value="sent" />
שם המשתמש לפאנל הניהול:
<br />
<input type="text" name="name" value="" style="width: 500px;"/>
<br />
סיסמה ישנה: (להקיש רק בשינוי סיסמה)
<br />
<input type="text" name="old_pass" value="" style="width: 500px;"/>
<br />
סיסמה חדשה לפאנל הניהול:
<br />
<input type="text" name="pass" value="" style="width: 500px;"/>
<br />
סיסמה חדשה בשנית לפאנל הניהול:
<br />
<input type="text" name="pass2" value="" style="width: 500px;"/>
<br /><br />
<input type="submit" value="שלח" class="button" />
</form>
CONTENT;
?>

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

עריכה:
חוץ מזה, אני לא שואל אם אני בסדר, אני שואל לאן להמשיך, ללמוד עוד PHP, למרות שאני מסתדר עם כל דבר עד עכשיו כמעט או ללכת ונניח להתחיל ללמוד AJAX או לשבת וללמוד קצת JS. נראה לי אני אקח לי איזה שישי שבת ללמוד JS ככה חח.

אתה לא שואל אם אתה בסדר?

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

AlmogBaku 18-02-09 16:42

ציטוט:

נכתב במקור על ידי Adir|HomeServ.co.il (פרסם 698950)
לא דיברתי עליו, דיברתי עלי

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

intercooler3819 18-02-09 18:59

ציטוט:

נכתב במקור על ידי Baku (פרסם 698930)
לפי הקוד שהוא הציג, והשאלות שהוא שאל. הסיכוי שהוא יצליח לפתח מערכת VirtualCron למשל היא מאוד נמוכה.. אלו מערכות מאוד מורכבות..

אממ תסביר לי מה הכוונה בVIRTUAL CRON..
קרון שלא תלוי בCRON TABS המובנים בלינוקס?

כי אם כן זה אפילו לא מערכת.. זה עניין של מספר דקות..

להת'

ניצן

AlmogBaku 18-02-09 19:39

VirtualCron זה שם למערכת קרון ג'ובס שלא תלויה במכונה שלך, במילים אחרות, קרון ג'ובס בPHP.

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

intercooler3819 18-02-09 20:16

אין כאן שום בעיה..
לא הבנתי איזה לולאות אתה מדבר עליהם בכלל

הפורמט הרגיל של קרון הוא הרצה באינטרוול קבוע.. לדוגמא
0 0 0 &#37;5 0 0

וכדומה
כל מה שאתה צריך זה לדעת לעבוד עם האינטרוולים האלה - שבסה"כ מדובר בטבלאת קרונים
ובכל אינטרוול לפי הטבלאת קרונים לבדוק אם הזמן הנוכחי (שנמדד בשניות TIME(); ) תואם או מתחלק בדיוק באינטרוול הדרוש ואם כן לבצע הרצה של הקרון המיועד..

זה בכלל לא מסובך אני לא מבין איך הגעת ללולאות אינסופיות ולהזרמה של מידע ביניהם ואין לי מושג למה עוד..

קרון טאב כמו שהוא מיושם בלינוקס מאוד קל להלביש על אתר..-


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

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