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

connect to DB - php


panosu1

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

καλησπέρα στα πλαίσια της πτυχιακής μου εργασίας εκτελώ ένα 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. 

ο κώδικας είναι σωστός? 

 

Ευχαριστώ προκαταβολικά. 

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

  • Απαντ. 69
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

<?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();
    }
?>

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

Αν εχεις βαλει WAMP έχεις mysql βάση. Στο connection string βλεπω οτι θες να συνδεθείς σε POSΤGRE . Αν θέλεις να συνδεθείς σε mysql ο αποπανω κωδικας του Tiphona  θα παιξει αν έχεις βαση που λέγεται myDB. Αλλιως αλλαξε το connection string. Αν τωρα θέλεις να συνδεθείς σε POSTGRE τσεκαρε οτι έχεις εγκαταστήσει POSTGRE και οτι δουλευει και ενημερωσε.

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

<?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 ΙΙΙ όπως είπα, κάτι που ακόμα δεν το έχω καταφέρει. 

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

<?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";
 
έχει κανείς καμιά ιδέα? Ευχαριστώ για την βοήθεια που μου δώσατε! 
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

θα ήθελα όμως να βγάλω τα connection details, τις μεταβλητές έξω από τον κώδικα για λόγους ασφαλείας και να τους καλώ εγώ από άλλο αρχείο όπου χρειάζονται. κάτι σαν global μεταβλητές - δεν γνωρίζω πως λέγονται στην php.

$host        = "192.168..";
$port        = "port";
$dbname      = "dbname";
$credentials = "user password";
 
έχει κανείς καμιά ιδέα? Ευχαριστώ για την βοήθεια που μου δώσατε! 

 

 

Και για ποιό λόγο αυτό είναι καλύτερο για την ασφάλεια;

 

Spoiler: δεν είναι.

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

Αν κατάλαβα καλά τι θέλεις :

 

Μπορείς να βάλεις τα connection details σου σε ένα αρχείο πχ : db.php , 

και μετά στην αρχή του κώδικά σου να το καλείς με την 

require_once('db.php');

περισσότερα Link.png Site: εδώ

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

Και για ποιό λόγο αυτό είναι καλύτερο για την ασφάλεια;

 

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");

 

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

Με μπέρδεψες :P

 

Αν ορίσεις στο db.php που σου είπα παραπάνω τα 

$host        = "yadayadayada";
$port        = "yadayadayada";
$dbname      = "yadayadayada";
$credentials = "user=yadayadayada password=yadayadayada";

και το κάνεις require, μετά στο κανονικό σου αρχείο μπορείς να φτιάξεις  το connection λινκ σου :

$link = pg_connect( "$host $port $dbname $credentials" );
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Με μπέρδεψες :P

 

Αν ορίσεις στο db.php που σου είπα παραπάνω τα 

$host        = "yadayadayada";
$port        = "yadayadayada";
$dbname      = "yadayadayada";
$credentials = "user=yadayadayada password=yadayadayada";

και το κάνεις require, μετά στο κανονικό σου αρχείο μπορείς να φτιάξεις  το connection λινκ σου :

$link = pg_connect( "$host $port $dbname $credentials" );

 

αυτή ακριβώς ήταν η απορία μου! και πάλι ευχαριστώ.

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

@defacer 

 

Μιας και λύθηκε το θέμα του OP, μπορεις να εξηγήσεις γιατί δεν είναι ασφαλές? Το βλέπω σε πολλά projects και γενικά και γω έτσι το κάνω. Πως αλλιώς μπορεί να χειριστεί κανείς το συγκεκριμένο θέμα για να είναι πιο secure?

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

@defacer 

 

Μιας και λύθηκε το θέμα του OP, μπορεις να εξηγήσεις γιατί δεν είναι ασφαλές? Το βλέπω σε πολλά projects και γενικά και γω έτσι το κάνω. Πως αλλιώς μπορεί να χειριστεί κανείς το συγκεκριμένο θέμα για να είναι πιο secure?

θα ήθελα να το μάθω και εγώ αυτό.

 

επίσης συνεχίζοντας την απορία μου για τα connection details. αν το αρχείο με τα details αυτά είναι σε άλλο φάκελο - εκτός από τον www του wamp μου δηλαδή θα χρειαστεί να το καλέσω διαφορετικά?

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

  • Moderators

Τα PHP αρχεία τρέχουν στον server, όχι στον client. Το να τα βάλεις σε άλλο αρχείο δε σου λύνει τίποτα. Για περισσότερες πληροφορίες θα πρέπει να περιμένετε τους ειδήμονες :P

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

@defacer 

 

Μιας και λύθηκε το θέμα του OP, μπορεις να εξηγήσεις γιατί δεν είναι ασφαλές? Το βλέπω σε πολλά projects και γενικά και γω έτσι το κάνω. Πως αλλιώς μπορεί να χειριστεί κανείς το συγκεκριμένο θέμα για να είναι πιο secure?

 

Δεν είπα ότι δεν είναι ασφαλές (ούτε και ότι είναι), είπα ότι δεν είναι ασφαλέστερο από το να τα έχεις όπως έγραψε ο φίλος "μέσα στον κώδικα". Επ' αυτού:

 

1. Ρωτάς να εξηγήσω γιατί δεν είναι ασφαλές, αλλά αυτό δεν πάει έτσι. Εσύ (ο κάθε εσύ) πρέπει να εξηγήσεις γιατί είναι πιο ασφαλές διαφορετικά, όχι εγώ (ο κάθε εγώ) γιατί δεν είναι.

 

2. Δεν είναι προφανές ότι δεν έχει καμία διαφορά αν θα έχεις τον κώδικα η/και τα passwords στο ίδιο αρχείο ή σε διαφορετικά αρχεία εφόσον η πρόσβαση σε καθένα από τα αρχεία αυτά καθορίζεται με τον ίδιο ακριβώς τρόπο; Ο φίλος είπε να τα βάλει "έξω από τον κώδικα", αλλά αυτό προφανώς δε στέκει (ούτε θα έπαιζε ρόλο αν έστεκε για το λόγο που είπα αμέσως πριν) εφόσον το αρχείο που θα τα βάλει είναι επίσης κώδικας -- ορίζει μεταβλητές. Επομένως και από αυτή τη σκοπιά να το δεις, είναι σα να ισχυρίζεται κανείς ότι αν χωρίσει κατάλληλα τον κώδικά του σε 2, 3, ή Ν αρχεία με κάποιο μαγικό τρόπο αυξάνεται η ασφάλεια. Προφανώς δεν ισχύει.

 

Αυτό δε σημαίνει ότι δεν υπάρχει κανένας λόγος να το κάνεις, αν μη τι άλλο είναι συχνά πολύ πιο βολικό να έχεις όλες τις ρυθμίσεις σε ένα αρχείο και μπροστά σου στο πιάτο παρά να τα έχεις σκόρπια απο δω κι απο κει σε άλλα αρχεία. Απλά δεν υπάρχει κανένας λόγος όσον αφορά την ασφάλεια. Όλα ανεξαιρέτως τα αρχεία PHP της εφαρμογής πρέπει να μπορούν να διαβάζονται από το web server. Από τη στιγμή λοιπόν που κάποιος αποκτήσει πρόσβαση σε ένα από αυτά, μπορεί να κάνει ο,τι του αρέσει και με όλα τα υπόλοιπα.

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

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα

  • Δημιουργία νέου...