panosu1 Δημοσ. 29 Οκτωβρίου 2015 Δημοσ. 29 Οκτωβρίου 2015 καλησπέρα στα πλαίσια της πτυχιακής μου εργασίας εκτελώ ένα project όπου θα βασίζεται σε gis. έχω βάλει λοιπόν το wamp ώστε να εκτελώ τον php + html κώδικα και το tomcat apache όπου χωστάρετε ο geoserver μου. επίσης έχω κάνει ένα DB με το pgadmin III. θέλω λοιπόν να κάνω connect στο DB αυτό αλλά κάτι κάνω λάθος. Σας παραθέτω τον κώδικα μου να δείτε και εσείς αν χάνω κάτι. <html> <head> <title>Test</title> </head> <body bgcolor="grey"> <?php //session_start(); $link = @pg_connect("host=127.0.0.1 port=5432 dbname=greece user=postgres password=postgres"); if (!$link) { die('could not connect : ' . mysql_error()); } $db_selected = @mysql_select_db(DB_NAME, $link); if (!$db_selected) { die('cant\'t use ' . DB_NAME . ': ' . mysql_error()); } echo 'Connected succesfully'; ?> </body> </html> το αποτέλεσμα που έχω είναι τίποτα. Δηλαδή ούτε error αλλά ούτε το τελευταίο echo. ο κώδικας είναι σωστός? Ευχαριστώ προκαταβολικά.
Tiphonas Δημοσ. 29 Οκτωβρίου 2015 Δημοσ. 29 Οκτωβρίου 2015 <?php$servername = "localhost";$username = "username";$password = "password";try { $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; }catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); }?> 1
mentoras28 Δημοσ. 29 Οκτωβρίου 2015 Δημοσ. 29 Οκτωβρίου 2015 Αν εχεις βαλει WAMP έχεις mysql βάση. Στο connection string βλεπω οτι θες να συνδεθείς σε POSΤGRE . Αν θέλεις να συνδεθείς σε mysql ο αποπανω κωδικας του Tiphona θα παιξει αν έχεις βαση που λέγεται myDB. Αλλιως αλλαξε το connection string. Αν τωρα θέλεις να συνδεθείς σε POSTGRE τσεκαρε οτι έχεις εγκαταστήσει POSTGRE και οτι δουλευει και ενημερωσε.
panosu1 Δημοσ. 29 Οκτωβρίου 2015 Μέλος Δημοσ. 29 Οκτωβρίου 2015 <?php $servername = "localhost"; $username = "username"; $password = "password"; try { $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?> ευχαριστώ πολύ για τον κώδικα. επειδή είναι διαφορετικός από τον δικό μου, θέλω να ρωτήσω αν είχα λάθη στον δικό μου. Επίσης όπως είπε και ο mentoras και απαντάω παρακάτω, το DB μου είναι σε PostgreSQL άρα εκεί θέλω να κάνω connect και όχι σε mysql. φαντάζομαι πως πρέπει να αλλάξω το πρώτο $conn ...("mysql:...) ? και αν ναι σε τι? Αν εχεις βαλει WAMP έχεις mysql βάση. Στο connection string βλεπω οτι θες να συνδεθείς σε POSΤGRE . Αν θέλεις να συνδεθείς σε mysql ο αποπανω κωδικας του Tiphona θα παιξει αν έχεις βαση που λέγεται myDB. Αλλιως αλλαξε το connection string. Αν τωρα θέλεις να συνδεθείς σε POSTGRE τσεκαρε οτι έχεις εγκαταστήσει POSTGRE και οτι δουλευει και ενημερωσε. έχω εγκαταστήσει postgreSQL και εκεί είναι το DB μου, δεν χρησιμοποιώ το MySQL γιατί στο postgreSQL έχω postgis support. edit με τον κώδικα του Tiphonas συνδέομαι κανονικά στο phpmyadmin (όπως και με αντίστοιχο δικό μου κώδικα που έχω κάνει για άλλη δουλειά). το ζητούμενο μου είναι να συνδεθώ στο pgadmin ΙΙΙ όπως είπα, κάτι που ακόμα δεν το έχω καταφέρει.
NoD Δημοσ. 30 Οκτωβρίου 2015 Δημοσ. 30 Οκτωβρίου 2015 1. Βγάλε τον stfu operator (@) μπροστά από την pg_connect σου, αν θες να δεις κάνα error/warning/κάτι. 2. Έλεγξε ότι το php extension (pgsql) είναι ενεργοποιημένο.
panosu1 Δημοσ. 2 Νοεμβρίου 2015 Μέλος Δημοσ. 2 Νοεμβρίου 2015 <?php $servername = "localhost"; $username = "username"; $password = "password"; try { $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?> 1. Βγάλε τον stfu operator (@) μπροστά από την pg_connect σου, αν θες να δεις κάνα error/warning/κάτι. 2. Έλεγξε ότι το php extension (pgsql) είναι ενεργοποιημένο. τελικά μου έλειπε το pgsql και ένα dll. κατάφερα και έκανα τελικά connect. θα ήθελα όμως να βγάλω τα connection details, τις μεταβλητές έξω από τον κώδικα για λόγους ασφαλείας και να τους καλώ εγώ από άλλο αρχείο όπου χρειάζονται. κάτι σαν global μεταβλητές - δεν γνωρίζω πως λέγονται στην php. $host = "192.168.."; $port = "port"; $dbname = "dbname"; $credentials = "user password"; έχει κανείς καμιά ιδέα? Ευχαριστώ για την βοήθεια που μου δώσατε!
defacer Δημοσ. 2 Νοεμβρίου 2015 Δημοσ. 2 Νοεμβρίου 2015 θα ήθελα όμως να βγάλω τα connection details, τις μεταβλητές έξω από τον κώδικα για λόγους ασφαλείας και να τους καλώ εγώ από άλλο αρχείο όπου χρειάζονται. κάτι σαν global μεταβλητές - δεν γνωρίζω πως λέγονται στην php. $host = "192.168.."; $port = "port"; $dbname = "dbname"; $credentials = "user password"; έχει κανείς καμιά ιδέα? Ευχαριστώ για την βοήθεια που μου δώσατε! Και για ποιό λόγο αυτό είναι καλύτερο για την ασφάλεια; Spoiler: δεν είναι.
kostenko Δημοσ. 2 Νοεμβρίου 2015 Δημοσ. 2 Νοεμβρίου 2015 Αν κατάλαβα καλά τι θέλεις : Μπορείς να βάλεις τα connection details σου σε ένα αρχείο πχ : db.php , και μετά στην αρχή του κώδικά σου να το καλείς με την require_once('db.php'); περισσότερα Site: εδώ
panosu1 Δημοσ. 2 Νοεμβρίου 2015 Μέλος Δημοσ. 2 Νοεμβρίου 2015 Και για ποιό λόγο αυτό είναι καλύτερο για την ασφάλεια; Spoiler: δεν είναι. δεν γνωρίζω αν είναι για να πω την αλήθεια, αλλά έτσι μου ζητήθηκε. Αν κατάλαβα καλά τι θέλεις : Μπορείς να βάλεις τα connection details σου σε ένα αρχείο πχ : db.php , και μετά στην αρχή του κώδικά σου να το καλείς με την require_once('db.php');περισσότερα [link=' και εγώ έτσι το είχα σκεφτεί απλά νόμιζα ότι θα γίνει με include κάτι.php. θα το κοιτάξω. Σας ευχαριστώ και τους δύο. edit ξέχασα να πω όμως ότι το θέμα μου δεν ήταν στις include ή require_once εντολές αλλά στο πως θα μπουν αυτές οι μεταβλητές στον κώδικα και συγκεκριμένα στο connection link που έχω φτιάξει παραπάνω. $link = @pg_connect("host=127.0.0.1 port=5432 dbname=greece user=postgres password=postgres");
kostenko Δημοσ. 2 Νοεμβρίου 2015 Δημοσ. 2 Νοεμβρίου 2015 Με μπέρδεψες Αν ορίσεις στο db.php που σου είπα παραπάνω τα $host = "yadayadayada"; $port = "yadayadayada"; $dbname = "yadayadayada"; $credentials = "user=yadayadayada password=yadayadayada"; και το κάνεις require, μετά στο κανονικό σου αρχείο μπορείς να φτιάξεις το connection λινκ σου : $link = pg_connect( "$host $port $dbname $credentials" ); 1
panosu1 Δημοσ. 2 Νοεμβρίου 2015 Μέλος Δημοσ. 2 Νοεμβρίου 2015 Με μπέρδεψες Αν ορίσεις στο db.php που σου είπα παραπάνω τα $host = "yadayadayada"; $port = "yadayadayada"; $dbname = "yadayadayada"; $credentials = "user=yadayadayada password=yadayadayada"; και το κάνεις require, μετά στο κανονικό σου αρχείο μπορείς να φτιάξεις το connection λινκ σου : $link = pg_connect( "$host $port $dbname $credentials" ); αυτή ακριβώς ήταν η απορία μου! και πάλι ευχαριστώ.
kostenko Δημοσ. 2 Νοεμβρίου 2015 Δημοσ. 2 Νοεμβρίου 2015 @defacer Μιας και λύθηκε το θέμα του OP, μπορεις να εξηγήσεις γιατί δεν είναι ασφαλές? Το βλέπω σε πολλά projects και γενικά και γω έτσι το κάνω. Πως αλλιώς μπορεί να χειριστεί κανείς το συγκεκριμένο θέμα για να είναι πιο secure?
panosu1 Δημοσ. 2 Νοεμβρίου 2015 Μέλος Δημοσ. 2 Νοεμβρίου 2015 @defacer Μιας και λύθηκε το θέμα του OP, μπορεις να εξηγήσεις γιατί δεν είναι ασφαλές? Το βλέπω σε πολλά projects και γενικά και γω έτσι το κάνω. Πως αλλιώς μπορεί να χειριστεί κανείς το συγκεκριμένο θέμα για να είναι πιο secure? θα ήθελα να το μάθω και εγώ αυτό. επίσης συνεχίζοντας την απορία μου για τα connection details. αν το αρχείο με τα details αυτά είναι σε άλλο φάκελο - εκτός από τον www του wamp μου δηλαδή θα χρειαστεί να το καλέσω διαφορετικά?
Moderators Kercyn Δημοσ. 2 Νοεμβρίου 2015 Moderators Δημοσ. 2 Νοεμβρίου 2015 Τα PHP αρχεία τρέχουν στον server, όχι στον client. Το να τα βάλεις σε άλλο αρχείο δε σου λύνει τίποτα. Για περισσότερες πληροφορίες θα πρέπει να περιμένετε τους ειδήμονες
defacer Δημοσ. 2 Νοεμβρίου 2015 Δημοσ. 2 Νοεμβρίου 2015 @defacer Μιας και λύθηκε το θέμα του OP, μπορεις να εξηγήσεις γιατί δεν είναι ασφαλές? Το βλέπω σε πολλά projects και γενικά και γω έτσι το κάνω. Πως αλλιώς μπορεί να χειριστεί κανείς το συγκεκριμένο θέμα για να είναι πιο secure? Δεν είπα ότι δεν είναι ασφαλές (ούτε και ότι είναι), είπα ότι δεν είναι ασφαλέστερο από το να τα έχεις όπως έγραψε ο φίλος "μέσα στον κώδικα". Επ' αυτού: 1. Ρωτάς να εξηγήσω γιατί δεν είναι ασφαλές, αλλά αυτό δεν πάει έτσι. Εσύ (ο κάθε εσύ) πρέπει να εξηγήσεις γιατί είναι πιο ασφαλές διαφορετικά, όχι εγώ (ο κάθε εγώ) γιατί δεν είναι. 2. Δεν είναι προφανές ότι δεν έχει καμία διαφορά αν θα έχεις τον κώδικα η/και τα passwords στο ίδιο αρχείο ή σε διαφορετικά αρχεία εφόσον η πρόσβαση σε καθένα από τα αρχεία αυτά καθορίζεται με τον ίδιο ακριβώς τρόπο; Ο φίλος είπε να τα βάλει "έξω από τον κώδικα", αλλά αυτό προφανώς δε στέκει (ούτε θα έπαιζε ρόλο αν έστεκε για το λόγο που είπα αμέσως πριν) εφόσον το αρχείο που θα τα βάλει είναι επίσης κώδικας -- ορίζει μεταβλητές. Επομένως και από αυτή τη σκοπιά να το δεις, είναι σα να ισχυρίζεται κανείς ότι αν χωρίσει κατάλληλα τον κώδικά του σε 2, 3, ή Ν αρχεία με κάποιο μαγικό τρόπο αυξάνεται η ασφάλεια. Προφανώς δεν ισχύει. Αυτό δε σημαίνει ότι δεν υπάρχει κανένας λόγος να το κάνεις, αν μη τι άλλο είναι συχνά πολύ πιο βολικό να έχεις όλες τις ρυθμίσεις σε ένα αρχείο και μπροστά σου στο πιάτο παρά να τα έχεις σκόρπια απο δω κι απο κει σε άλλα αρχεία. Απλά δεν υπάρχει κανένας λόγος όσον αφορά την ασφάλεια. Όλα ανεξαιρέτως τα αρχεία PHP της εφαρμογής πρέπει να μπορούν να διαβάζονται από το web server. Από τη στιγμή λοιπόν που κάποιος αποκτήσει πρόσβαση σε ένα από αυτά, μπορεί να κάνει ο,τι του αρέσει και με όλα τα υπόλοιπα. 2
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα