Προς το περιεχόμενο

Πρόβλημα στην επικοινωνία ajax με php σε διαφορετικά αρχεία


oraiustepe

Προτεινόμενες αναρτήσεις

Καλησπέρα. Έχω το εξής πρόβλημα. όπως βλέπεται στο αρχείο "eisagogi arxeion meta to submit" έχω ενα if statement το οποίο κάθε echo του πρέπει να πηγαίνει στο αντίστοιχο ajax if (αρχείο form)  και να τυπώνει ανάλογα. Π.χ αν ο χρήστης βάλει username μικρότερο από δύο χαρακτήρες να πηγαίνει μέσα στον κώδικα του ajax και να μπαίνει στην συνθήκη "else if (html == 'username') " και να τυπώνει username is required. Αλλά όλη αυτή η διαδικασία σκαλώνει και δεν επικοινωνούν τα δύο αρχεία. Τα αρχεία βρίσκονται ακριβώς στο ίδιο Location. Υπάρχει κάποιο λάθος στον κώδικα ajax ή στο php Που μου διαφεύγει.

Υ.Γ η εντολή "$("#register").click(function () {" (το register είναι id στο submit input type της φόρμας") (<input type="Submit" value="Submit" id="register"  > )

Οποιαδήποτε βοήθεια ευπρόσδεκτη, σόρρυ αν κάτι είναι δυσνόητο είμαι σε αρχάριο level ακόμα.

Ευχαριστώ εκ των προτέρων  

eisagogi arxeion meta to submit.png

form.png

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Έχω δοκιμάσει αυτό που έγραψες χωρίς όμως όλα αυτά τα ifs και χωρίς mysqli διότι ήθελα να ελέγξω πως επικοινωνούν κι όχι τι γίνεται αφού επικοινωνήσουν.

Το πρώτο που είδα είναι πως ξέχασες να βάλεις ',' (κόμμα) μετά το type: "POST"

Το άλλο, δοκίμασε να τρέξεις κάπου την πιο κάτω εντολή για να βλέπεις τι επέστρεψε. Αν έχει επιστραφεί κάτι θα το δεις στην κονσόλα σου (web developer tools, console)

console.log(html)

Σε μένα επικοινωνούν μια χαρά έτσι όπως το έκανες εκτός από το σημείο με το POST. Είχα και τα 2 αρχεία στον ίδιο φάκελο. Άνοιξε την κονσόλα σου και πες μας τι σου γράφει. Πάτησε το κουμπί "xhr" για να βλέπεις τα ajax requests που γίνονται. Ακολούθως πες μας τι σου επιστρέφει. Αν επιστρέφει κάτι, σημαίνει πως υπάρχει επικοινωνία και κάτι άλλο φταίει. Αν δεν επιστρέφει κάτι αλλά βλέπεις πως όταν πάτησες το κουμπί στην κονσόλα έγραψε πως έγινε κάποιο xhr request, τότε υπάρχει επικοινωνία αλλά δεν επιστρέφεις τίποτα. Αν δεν γράφει κάτι τότε σημαίνει πως δεν γίνεται το ajax request (άρα κάποιο λάθος έχει το js script σου). Αν γίνεται το ajax request και είναι 500 τότε μάλλον δεν βρίσκει το αρχείο σου ή τα έπαιξε κάποια βιβλιοθήκη που χρησιμοποιείς (π.χ. mysqli)

Επεξ/σία από Ponous
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

17 ώρες πριν, Ponous είπε

Έχω δοκιμάσει αυτό που έγραψες χωρίς όμως όλα αυτά τα ifs και χωρίς mysqli διότι ήθελα να ελέγξω πως επικοινωνούν κι όχι τι γίνεται αφού επικοινωνήσουν.

Το πρώτο που είδα είναι πως ξέχασες να βάλεις ',' (κόμμα) μετά το type: "POST"

Το άλλο, δοκίμασε να τρέξεις κάπου την πιο κάτω εντολή για να βλέπεις τι επέστρεψε. Αν έχει επιστραφεί κάτι θα το δεις στην κονσόλα σου (web developer tools, console)


console.log(html)

Σε μένα επικοινωνούν μια χαρά έτσι όπως το έκανες εκτός από το σημείο με το POST. Είχα και τα 2 αρχεία στον ίδιο φάκελο. Άνοιξε την κονσόλα σου και πες μας τι σου γράφει. Πάτησε το κουμπί "xhr" για να βλέπεις τα ajax requests που γίνονται. Ακολούθως πες μας τι σου επιστρέφει. Αν επιστρέφει κάτι, σημαίνει πως υπάρχει επικοινωνία και κάτι άλλο φταίει. Αν δεν επιστρέφει κάτι αλλά βλέπεις πως όταν πάτησες το κουμπί στην κονσόλα έγραψε πως έγινε κάποιο xhr request, τότε υπάρχει επικοινωνία αλλά δεν επιστρέφεις τίποτα. Αν δεν γράφει κάτι τότε σημαίνει πως δεν γίνεται το ajax request (άρα κάποιο λάθος έχει το js script σου). Αν γίνεται το ajax request και είναι 500 τότε μάλλον δεν βρίσκει το αρχείο σου ή τα έπαιξε κάποια βιβλιοθήκη που χρησιμοποιείς (π.χ. mysqli)

Τώρα με κάποιες αλλαγές που έκανα ότι και να βάλω στην φόρμα επιστρέφει το τελευταίο statement του ajax, δηλαδή error processing request στα υπόλοιπα δεν μπαίνει καν. Από ότι βλέπω στην κνσόλα του firefox δεν υπάρχει κάποιο errror xhr μου βγάζει οκ οπως βλέπεις και στην εικόνα. Ωστόσο έχω ένα error από πάνω που δεν ξέρω σε τι αναφέρεται (αυτό που λέει facicon.ico). Τα προβλήματα με τα κόμματα τα διόρθωσα π.χ POST όπως μου είπες. 

Screenshot_11.png

Ορίστε και ο κώδικας απο την φόρμα που ειναι μέσα στο ίδιο αρχείο με το ajax απλά στο body. Είναι απλή φόρμα όπως βλέπεις αλλά δεν νομίζω να παιζει κάποιο ρόλο (θα την στρώσω μετά).

Screenshot_12.png

Μπορώ να έχω λίγο τον κώδικά σου. Γιατί το έτρεξα και χωρίς sql δηλαδή να βγάλει απλά τα μηνύματα (σε περίπτωση που δεν βάζει username ας πούμε να βγάλει το αντίστοιχο μηνυμα) και πάλι μου βγάζει μόνο το τελευταίο. Σε εσένα βγάζει κανονικά κάποιο από τα άλλα μηνύματα; από ότι καταλαβαίνω επικοινωνεί με το ajax αλλά βγάζει μόνο το τελευταίο if για κάποιο λόγο

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

9 ώρες πριν, oraiustepe είπε

μου βγάζει οκ οπως βλέπεις και στην εικόνα

Ωραία εκεί θα μπεις και θα δεις τι γράφει στο tab "Απάντηση" ή στα αγγλικά Response. Ό,τι έγραψες στο echo (ή και στο return νομίζω) του php file θα το δεις εκεί. Είναι ένας τρόπος για να ελέγξεις τι αίτημα στάλθηκε στον server (δλδ το php αρχείο σου σε αυτή την περίπτωση) και τι επιστράφηκε στον client (δηλαδή το αρχείο με το ajax σε αυτή την περίπτωση). Αυτό θα σου πει ποιος έκανε την μ...κία. Ακολούθως κάνεις τις ανάλογες διορθώσεις. Αλλά δες τι επιστράφηκε κι αν δυσκολεύεσαι στείλε μου τα αρχεία ολόκληρα με μερικα comments στον κώδικα.

9 ώρες πριν, oraiustepe είπε

Ωστόσο έχω ένα error από πάνω που δεν ξέρω σε τι αναφέρεται (αυτό που λέει facicon.ico).

Σε αυτό το πρόβλημα δεν σε επηρεάζει. Favicon.ico είναι το μικρό εικονίδιο που βλέπεις σε μια σελίδα. Αν δεις το tab στον browser σου, κάθε σελίδα έχει ένα τέτοιο.

9 ώρες πριν, oraiustepe είπε

Μπορώ να έχω λίγο τον κώδικά σου.

Δεν έχω βάλει την λογική με τα ifs μέσα. Απλά έλεγχα τι τιμές στέλνει το ajax και τι δέχεται. Μετά τα τύπωνα για να δω πως είναι όλα οκ

Μερικά hints & tips για τον κώδικα σου

Όχι πως είναι λάθος ό,τι έκανες απλά μερικά tips καλής πρακτικής που πιστέυω στο μέλλον θα βοηθήσουν.

  1. Έχεις μια φόρμα η οποία είναι ολοκληρωμένη. Και submit button έχεις και action, method attributes defined. Κατ' αρχάς εγώ εκπλήσσομαι που δεν κάνει refresh η σελίδα μιας και στο js script σου δεν έχεις κάπου την εντολή preventDefault(). Αν είναι να χρησιμοποιήσεις ajax, τότε θα πρέπει το κουμπί σου να έχει τον τύπο button και να είσαι σίγουρος πως δεν καλείται η προκαθορισμένη ιδιότητα ενός κουμπιού στην φόρμα. (Η προκαθορισμένη ιδιότητα είναι το submit της σελίδας). Τότε έχει νόημα να κάνεις ajax request
  2. Προσωπικά σε ένα μέρος θα έβαζα τα στοιχεία method και action για να μην μπερδευτώ όταν δω τον κώδικα μετά από ένα σ/κ. Αν το κρατήσεις στη φόρμα μπορείς με jquery να πιάσεις τα στοιχεία αυτά. Αν μείνουν στο script τότε δεν θα όριζα κάτι στην φόρμα μου. Πιστέυω κράτησε τα στο html όταν βρεις το bug μπας και στο μέλλον αποφασίσεις πως δεν θες ajax request
  3. Αν προσέξεις, έχεις επανάληψη στο js script. Πρόσεξε λίγο την δομή. Επαναλαμβάνεις το ίδιο html code:
    <div class="alert alert-danger"><strong>ΚΕΙΜΕΝΟ</strong></div>

    Κατ' εμένα δεν χρειάζεται να επαναλαμβάνεται. Όλο αυτό βάλ' το στον κώδικα html πάνω εκεί στο add_err2. Αφού ξέρεις να χρησιμοποιείς την εντολή .html(), γιατί να μην αλλάζεις μόνο το κείμενο;  Ως επίσης, αν ξέρεις και css, μπορείς να κάνεις μια κλάση η οποία θα κρύβει το div tag. Δηλαδή η κλάση θα είναι κάπως έτσι:

    .hidden {
    	display: none;
    }

    Κάθε φορά που θες να εμφανίζεται κάποιο div tag, θα αφαιρείς αυτή την κλάση (με jquery). Κάθε φορά που θες να μην εμφανίζεται, θα κάνεις το ανάποδο.

  4. Η εντολή html() της jquery είναι λίγο επικίνδυνη από πλευράς ασφάλειας. Όπου μπορείς χρησιμοποίησε την εντολή text() η οποία αλλάζει μόνο το κείμενο.

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Ευχαριστώ για τις συμβουλές καλού προγραμματισμού. Πήγα στην επιλογή απάντηση στο xhr και μου γράφει username όταν δεν βάζω τίποτα στην φόρμα. Κανονικά όταν δεν βάζω τίποτα στην φόρμα όντως το πρώτο μήνυμα λάθους πρέπει να αφορά το username, αλλά δεν βλέπω το ανάλογο μήνυμα να μου εμφανίζεται στην φόρμα. Επιστράφηκε username αλλά από ότι κατάλαβα τύπωσε username ενώ το ζητούμενο δεν είναι αυτό. Ορίστε και τα αρχεία απλά με το Php αρχείο χωρίς την βάση μέσα παρα μόνο τις συνθήκες για validation και το form αρχείο με τον ajax κώδικα και την φόρμα. Δεν ξέρω που είναι το λάθος. Ριξτα μια ματιά αν δεν σου κάνει κόπος. Έχω λίγα σχόλια μέσα. https://www.dropbox.com/s/wqmmxknlsqffssp/xorissql.rar?dl=0

Ευχαριστώform.php

Screenshot_14.png

 

 

1 ώρα πριν, Ponous είπε

Ωραία εκεί θα μπεις και θα δεις τι γράφει στο tab "Απάντηση" ή στα αγγλικά Response. Ό,τι έγραψες στο echo (ή και στο return νομίζω) του php file θα το δεις εκεί. Είναι ένας τρόπος για να ελέγξεις τι αίτημα στάλθηκε στον server (δλδ το php αρχείο σου σε αυτή την περίπτωση) και τι επιστράφηκε στον client (δηλαδή το αρχείο με το ajax σε αυτή την περίπτωση). Αυτό θα σου πει ποιος έκανε την μ...κία. Ακολούθως κάνεις τις ανάλογες διορθώσεις. Αλλά δες τι επιστράφηκε κι αν δυσκολεύεσαι στείλε μου τα αρχεία ολόκληρα με μερικα comments στον κώδικα.

Σε αυτό το πρόβλημα δεν σε επηρεάζει. Favicon.ico είναι το μικρό εικονίδιο που βλέπεις σε μια σελίδα. Αν δεις το tab στον browser σου, κάθε σελίδα έχει ένα τέτοιο.

Δεν έχω βάλει την λογική με τα ifs μέσα. Απλά έλεγχα τι τιμές στέλνει το ajax και τι δέχεται. Μετά τα τύπωνα για να δω πως είναι όλα οκ

Μερικά hints & tips για τον κώδικα σου

Όχι πως είναι λάθος ό,τι έκανες απλά μερικά tips καλής πρακτικής που πιστέυω στο μέλλον θα βοηθήσουν.

  1. Έχεις μια φόρμα η οποία είναι ολοκληρωμένη. Και submit button έχεις και action, method attributes defined. Κατ' αρχάς εγώ εκπλήσσομαι που δεν κάνει refresh η σελίδα μιας και στο js script σου δεν έχεις κάπου την εντολή preventDefault(). Αν είναι να χρησιμοποιήσεις ajax, τότε θα πρέπει το κουμπί σου να έχει τον τύπο button και να είσαι σίγουρος πως δεν καλείται η προκαθορισμένη ιδιότητα ενός κουμπιού στην φόρμα. (Η προκαθορισμένη ιδιότητα είναι το submit της σελίδας). Τότε έχει νόημα να κάνεις ajax request
  2. Προσωπικά σε ένα μέρος θα έβαζα τα στοιχεία method και action για να μην μπερδευτώ όταν δω τον κώδικα μετά από ένα σ/κ. Αν το κρατήσεις στη φόρμα μπορείς με jquery να πιάσεις τα στοιχεία αυτά. Αν μείνουν στο script τότε δεν θα όριζα κάτι στην φόρμα μου. Πιστέυω κράτησε τα στο html όταν βρεις το bug μπας και στο μέλλον αποφασίσεις πως δεν θες ajax request
  3. Αν προσέξεις, έχεις επανάληψη στο js script. Πρόσεξε λίγο την δομή. Επαναλαμβάνεις το ίδιο html code:
    
    <div class="alert alert-danger"><strong>ΚΕΙΜΕΝΟ</strong></div>

    Κατ' εμένα δεν χρειάζεται να επαναλαμβάνεται. Όλο αυτό βάλ' το στον κώδικα html πάνω εκεί στο add_err2. Αφού ξέρεις να χρησιμοποιείς την εντολή .html(), γιατί να μην αλλάζεις μόνο το κείμενο;  Ως επίσης, αν ξέρεις και css, μπορείς να κάνεις μια κλάση η οποία θα κρύβει το div tag. Δηλαδή η κλάση θα είναι κάπως έτσι:

    
    .hidden {
    	display: none;
    }

    Κάθε φορά που θες να εμφανίζεται κάποιο div tag, θα αφαιρείς αυτή την κλάση (με jquery). Κάθε φορά που θες να μην εμφανίζεται, θα κάνεις το ανάποδο.

  4. Η εντολή html() της jquery είναι λίγο επικίνδυνη από πλευράς ασφάλειας. Όπου μπορείς χρησιμοποίησε την εντολή text() η οποία αλλάζει μόνο το κείμενο.

Ορίστε και το λινκ https://www.dropbox.com/s/wqmmxknlsqffssp/xorissql.rar?dl=0

Επεξ/σία από oraiustepe
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

2 ώρες πριν, oraiustepe είπε

Επιστράφηκε username αλλά από ότι κατάλαβα τύπωσε username ενώ το ζητούμενο δεν είναι αυτό.

Άρα το πρόβλημα είναι καθαρά και μόνο στην συνάρτηση success

Δοκίμασε να ελέγξεις το response ως εξής:

success: function (html) {
	if(html.localeCompare('email')){
		console.log('here');
     	
      	// Συνέχισε με ό,τι είναι να κάνεις
	}
}

Περισσότερα: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare

Γενικά τα string δουλεύουν διαφορετικά από τους υπόλοιπουν τύπους μεταβλητών(όπως αριθμού, χαρακτήρες) διότι τα strings είναι μια ακολουθία από χαρακτήρες και αποθηκεύονται κάπως διαφορετικά στην μνήμη. Όταν πας στα objects ή τύχει να δεις κάποια γλώσσα προγραμματισμού όπως C θα είναι πιο ξεκάθαρο.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

1)dataType text αφου δεν ειναι ουτε html ουτε json, καλου κακου κανε ενα html = html.trim() στο response αν και προτεινω να το γυρισεις σε json

στην php πανω πανω header('Content-Type: text/plain...') στις ρυθμισεις του ajax προσθεσε dataType:"text" 

2) προσθηκη enctype: "application/x-www-form-urlencoded" και encodeURIcomponent σε ολα τα πεδια για να εισαι καλυμμένος  με συμβολα και ελληνικους χαρακτηρες

2)χρησιμοποιεις εκδοση 3.χ, ο τροπος που κανεις το ajax request ειναι deprecated αν και θα δουλεψει σε κανονικες συνθηκες προτεινω deferred callbacks

2)στελνεις την φορμα ακανονιστα, θα επρεπε να την κανεις serialize η να δωσεις ενα αντικειμενο με ολα τα πεδια. προσοχη ολα σου τα αρχεια να ειναι utf8

data: {
    "username": usermame
    ...
}
//...options

3) Η μεθοδος beforeSend εχει συντακτικο λαθος στο selector ...$("#add...

4) να χρησιμοποιεις strict equality operators

5) τα attributes της φορμας δε χρειαζονται αφου την στελνεις με ajax call (method & action)

6) τους τιτλους βαλτους μεσα σε label tags μη τα αφηνεις ετσι ορφανα (USERNAME:...)

//js
$.ajax({
    type:"POST",
    url : "το url σου",
    dataType: "text",
    data: {
        username:encodeURIComponent(username)
        ...
    },
    enctype: "application/x-www-form-urlencoded",
    beforeSend: function(){...}
})
.done(function(html) {

    html = html.trim();
    console.log(html); //F12 + debug
    ...
})
.fail(function() {
    console.log(arguments); //F12 + debug
})
//php recommendations
<?php
    mb_internal_encoding('UTF-8');
    setlocale(LC_ALL, "el_GR.utf8"); //linux server
    //windows server setlocale(LC_ALL, "Greek_Greece.utf8");
    header("Content-type: text/plain;charset=utf-8"); 
    session_start...

τα της php δεν εχω χρονο να τα τσεκαρω παντως τοσο σε backend οσο και σε frontend θελει βελτιωσεις ο κωδικας πολλες

https://jsfiddle.net/dennmtr/nL6bg0c4/7/

 

Στις 21/11/2020 στις 1:15 ΠΜ, Ponous είπε

Ωραία εκεί θα μπεις και θα δεις τι γράφει στο tab "Απάντηση" ή στα αγγλικά Response. Ό,τι έγραψες στο echo (ή και στο return νομίζω) του php file θα το δεις εκεί. Είναι ένας τρόπος για να ελέγξεις τι αίτημα στάλθηκε στον server (δλδ το php αρχείο σου σε αυτή την περίπτωση) και τι επιστράφηκε στον client (δηλαδή το αρχείο με το ajax σε αυτή την περίπτωση). Αυτό θα σου πει ποιος έκανε την μ...κία. Ακολούθως κάνεις τις ανάλογες διορθώσεις. Αλλά δες τι επιστράφηκε κι αν δυσκολεύεσαι στείλε μου τα αρχεία ολόκληρα με μερικα comments στον κώδικα.

Σε αυτό το πρόβλημα δεν σε επηρεάζει. Favicon.ico είναι το μικρό εικονίδιο που βλέπεις σε μια σελίδα. Αν δεις το tab στον browser σου, κάθε σελίδα έχει ένα τέτοιο.

Δεν έχω βάλει την λογική με τα ifs μέσα. Απλά έλεγχα τι τιμές στέλνει το ajax και τι δέχεται. Μετά τα τύπωνα για να δω πως είναι όλα οκ

Μερικά hints & tips για τον κώδικα σου

Όχι πως είναι λάθος ό,τι έκανες απλά μερικά tips καλής πρακτικής που πιστέυω στο μέλλον θα βοηθήσουν.

  1. Έχεις μια φόρμα η οποία είναι ολοκληρωμένη. Και submit button έχεις και action, method attributes defined. Κατ' αρχάς εγώ εκπλήσσομαι που δεν κάνει refresh η σελίδα μιας και στο js script σου δεν έχεις κάπου την εντολή preventDefault(). Αν είναι να χρησιμοποιήσεις ajax, τότε θα πρέπει το κουμπί σου να έχει τον τύπο button και να είσαι σίγουρος πως δεν καλείται η προκαθορισμένη ιδιότητα ενός κουμπιού στην φόρμα. (Η προκαθορισμένη ιδιότητα είναι το submit της σελίδας). Τότε έχει νόημα να κάνεις ajax request
  2. Προσωπικά σε ένα μέρος θα έβαζα τα στοιχεία method και action για να μην μπερδευτώ όταν δω τον κώδικα μετά από ένα σ/κ. Αν το κρατήσεις στη φόρμα μπορείς με jquery να πιάσεις τα στοιχεία αυτά. Αν μείνουν στο script τότε δεν θα όριζα κάτι στην φόρμα μου. Πιστέυω κράτησε τα στο html όταν βρεις το bug μπας και στο μέλλον αποφασίσεις πως δεν θες ajax request
  3. Αν προσέξεις, έχεις επανάληψη στο js script. Πρόσεξε λίγο την δομή. Επαναλαμβάνεις το ίδιο html code:
    
    <div class="alert alert-danger"><strong>ΚΕΙΜΕΝΟ</strong></div>

    Κατ' εμένα δεν χρειάζεται να επαναλαμβάνεται. Όλο αυτό βάλ' το στον κώδικα html πάνω εκεί στο add_err2. Αφού ξέρεις να χρησιμοποιείς την εντολή .html(), γιατί να μην αλλάζεις μόνο το κείμενο;  Ως επίσης, αν ξέρεις και css, μπορείς να κάνεις μια κλάση η οποία θα κρύβει το div tag. Δηλαδή η κλάση θα είναι κάπως έτσι:

    
    .hidden {
    	display: none;
    }

    Κάθε φορά που θες να εμφανίζεται κάποιο div tag, θα αφαιρείς αυτή την κλάση (με jquery). Κάθε φορά που θες να μην εμφανίζεται, θα κάνεις το ανάποδο.

  4. Η εντολή html() της jquery είναι λίγο επικίνδυνη από πλευράς ασφάλειας. Όπου μπορείς χρησιμοποίησε την εντολή text() η οποία αλλάζει μόνο το κείμενο.

1) δεν χρειαζεται preventDefault αφου επιστρεφει false στο event
2) η μεθοδος html της jquery ειναι ασφαλεστατη και απολυτος απαραιτητη τοσο οσο και η text. ενα απλο wrapper ειναι

Επεξ/σία από fragment_
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1 ώρα πριν, fragment_ είπε

1) δεν χρειαζεται preventDefault αφου επιστρεφει false στο event

Ορθότατος!

1 ώρα πριν, fragment_ είπε

2) η μεθοδος html της jquery ειναι ασφαλεστατη και απολυτος απαραιτητη τοσο οσο και η text. ενα απλο wrapper ειναι

Δεν είναι ασφαλές λόγω XSS. Σήμερα έκανε http request σε δική του σελίδα, αν αύριο κάνει request σε ξένη σελίδα ή γενικά θέλει να προσθέσει html code από τρίτους, ε είναι κάπως επίφοβο. Δεν σημαίνει πως θα του χακάρουν την βάση αλλά μπορεί να είναι αρκετό για να κλέψει δεδομένα από ανυποψίαστους πελάτες.

Δες εδώ στο documentation τους: Jquery docs

Additional Notes:

  • By design, any jQuery constructor or method that accepts an HTML string — jQuery(), .append(), .after(), etc. — can potentially execute code. This can occur by injection of script tags or use of HTML attributes that execute code (for example, <img onload="">). Do not use these methods to insert strings obtained from untrusted sources such as URL query parameters, cookies, or form inputs. Doing so can introduce cross-site-scripting (XSS) vulnerabilities. Remove or escape any user input before adding content to the document.

Overall, ε-ξαι-ρε-τι-κή απάντηση _fragment, τα μισά που έγραψες πρώτη φορά τα βλέπω! 😉

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

6 ώρες πριν, Ponous είπε

Ορθότατος!

Δεν είναι ασφαλές λόγω XSS. Σήμερα έκανε http request σε δική του σελίδα, αν αύριο κάνει request σε ξένη σελίδα ή γενικά θέλει να προσθέσει html code από τρίτους, ε είναι κάπως επίφοβο. Δεν σημαίνει πως θα του χακάρουν την βάση αλλά μπορεί να είναι αρκετό για να κλέψει δεδομένα από ανυποψίαστους πελάτες.

Δες εδώ στο documentation τους: Jquery docs

Additional Notes:

  • By design, any jQuery constructor or method that accepts an HTML string — jQuery(), .append(), .after(), etc. — can potentially execute code. This can occur by injection of script tags or use of HTML attributes that execute code (for example, <img onload="">). Do not use these methods to insert strings obtained from untrusted sources such as URL query parameters, cookies, or form inputs. Doing so can introduce cross-site-scripting (XSS) vulnerabilities. Remove or escape any user input before adding content to the document.

Overall, ε-ξαι-ρε-τι-κή απάντηση _fragment, τα μισά που έγραψες πρώτη φορά τα βλέπω! 😉

Σε ευχαριστώ,

Anyway παντος χωρίς αυτες τις εντολές δε μπορεις να φτιαξεις ολοκληρωμένο site και δε μπορείς να τις αποφύγεις

https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 3 εβδομάδες αργότερα...

Τελικά κατάφερα και τον έτρεξα τον κώδικα μου. Το λάθος μου ήταν πως αντί για echo στην php επρεπε να βάλω exit...πχ exit ('username'). Ωστόσο ενώ τώρα ο κώδικας τρέχει μια χαρά σε Localhost, μόλις τον βάζω σε έναν έτοιμο host που μου έχει δοθεί δεν τρέχει. Να επισυμάνω πως έχω προσαρμόσει τον κώδικα μου στον ετοιμο host και η επικοινωνία του php αρχειου με την ajax γινεται κανονικά γιατί στο debugger βλέπω 200 οκ Μήνυμα. Ωστόσο τα στοιχεία δεν περνάνε στην βάση, ενώ έχω επικοινωνία με την βάση. Κάποια λύση σε αυτό; Ευχαριστώ όλους σας για τις απαντήσεις 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν διάβασα όλα τα post. Απλά κάνε πρώτα μια δοκιμή στο αρχείο με fake data για να δεις αν όντως γράφει στην βάση. Αν εκεί οκ τότε δοκίμασε με postman να του στείλεις τα data και checkare.

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...