1. Advertising
    y u no do it?

    Advertising (learn more)

    Advertise virtually anything here, with CPM banner ads, CPM email ads and CPC contextual links. You can target relevant areas of the site and show ads based on geographical location of the user if you wish.

    Starts at just $1 per CPM or $0.10 per CPC.

DreamHost Issues

Discussion in 'PHP' started by Jeremy Benson, Jan 6, 2016.

  1. #1
    Hey, I just got my site hosted, but it's not working right. Code that worked fine in wamp doesn't work at all.

    I set up my db in DreamHost. The db is called frontpageads. It's got all the tables needed.

    When I load my url I get errors that make me think it's a connection error.

    Line 22 of my code is just a pdo instantiation:

     $db = new PDO($dsn, $dbUsername, $dbPassword, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    
    PHP:
    Here's my connection data:

    $dbHost = "frontpageads.ca";
    $dbPort = "22";
    $dbUsername = "";
    $dbPassword = "";
    $dbName = "frontpageads";
    
    $dsn = "mysql:host=$dbHost;port=$dbPort;dbname=$dbName";
    
    PHP:
    I've only taken my password and username out. Should this code work? What should I look for, for fixes?

    Thanks for your time,
    Jeremy.



     
    Jeremy Benson, Jan 6, 2016 IP
  2. PoPSiCLe

    PoPSiCLe Illustrious Member

    Messages:
    4,623
    Likes Received:
    725
    Best Answers:
    152
    Trophy Points:
    470
    #2
    It should, but are you sure your server is running on port 22? That sounds a bit weird...
     
    PoPSiCLe, Jan 6, 2016 IP
  3. Jeremy Benson

    Jeremy Benson Well-Known Member

    Messages:
    364
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    123
    #3
    Thanks popsicle :p You mean port 22 sounds weird? I just chose that number because that's what I use to connect with FileZilla to the server.
     
    Jeremy Benson, Jan 6, 2016 IP
  4. PoPSiCLe

    PoPSiCLe Illustrious Member

    Messages:
    4,623
    Likes Received:
    725
    Best Answers:
    152
    Trophy Points:
    470
    #4
    Uh, what? Are you... Wtf?

    SQL doesn't run on the same port as the ftp server.
    Unless you've gotten a specific port for the connection in the documentation from the host, leave it blank
     
    PoPSiCLe, Jan 6, 2016 IP
  5. Jeremy Benson

    Jeremy Benson Well-Known Member

    Messages:
    364
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    123
    #5
    Cool, let me try, lol.
     
    Jeremy Benson, Jan 6, 2016 IP
  6. Jeremy Benson

    Jeremy Benson Well-Known Member

    Messages:
    364
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    123
    #6
    I get less errors, but still no page load:

    SQLSTATE[HY000] [2002] Connection refused
    Fatal error: Call to a member function prepare() on null in /home/jeremybenson11/frontpageads.ca/index.php on line 26

    php 5.6
     
    Jeremy Benson, Jan 6, 2016 IP
  7. PoPSiCLe

    PoPSiCLe Illustrious Member

    Messages:
    4,623
    Likes Received:
    725
    Best Answers:
    152
    Trophy Points:
    470
    #7
    if that's the case, you have another problem. Connection refused means that it won't connect with whatever credentials you're using (normally) - are you absolutely sure you've put in everything in the info-doc from Dreamhost into your setup? I'm guessing that the $dbHost might not be complete. Or you have gotten another port you have to use. However, I guess that this is something Dreamhost-support will be able to clear up for you quite fast.
     
    PoPSiCLe, Jan 7, 2016 IP
  8. Jeremy Benson

    Jeremy Benson Well-Known Member

    Messages:
    364
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    123
    #8
    Sadly, DreamHost blamed it on something else... code or something. No support. I switched hosts. The site runs now, but there are issues running some of the scripts. I think I coded in php 5.6 but the server has a step blow and 7.0. I need password_hash(). I'm trying to run a reg script on 7.0 but I get an error, some kind of internal error. They suggest there is a code problem... Something not compatible from 5.6 to 7.0...

    This is the script I'm running

    <?php
    
        require('../../data/sqldata.php');
        require('../classes/pValidator.php');
        session_start();
       
        $errors = array();
       
        $validator = new pValidator;
       
        $validator->test_blank($_POST['birthMonth'], 'dob month');
        $validator->test_blank($_POST['birthDay'], 'dob day');
        $validator->test_blank($_POST['birthYear'], 'dob year');
        $validator->test_blank($_POST['country'], 'country');
       
        $validator->test_length($_POST['username'],4, 16, 'username');
        $validator->test_length($_POST['firstName'],1, 32,  'first name');
        $validator->test_length($_POST['lastName'],1, 32, 'last name');
        $validator->validate_email($_POST['email']);
        $validator->test_length($_POST['password'],4,16, 'password');
        $validator->test_length($_POST['password2'],4,16, 'password');
       
        $validator->validate_password($_POST['password'], $_POST['password2'], 'password');
       
        $errors = $validator->return_errors();
       
        // test is username or email was used
       
        try{
       
            $db = new PDO($dsn, $dbUsername, $dbPassword, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
       
        }catch(\PDOException $e){}
       
        $sqlTest = $db->prepare("SELECT count(*) FROM `users` WHERE `username` = ? OR `email` = ?");
        $sqlTest->execute(array($_POST['username'], $_POST['email']));
        $userCount = $sqlTest->fetchColumn();
       
        if($userCount > 0)
        {
           
            // header back to register with error
            header('../../register.php?error='.urlencode('username taken, or email used').'');
            exit;
        }
       
        if(empty($errors))
        {
            // register the user
           
            $ip = $_SERVER['REMOTE_ADDR'];
            $passwordHash = password_hash($_POST['password'], PASSWORD_DEFAULT);
            $verCode = md5(mcrypt_create_iv(12));
           
            $dob = $_POST['birthDay'] . '-' . $_POST['birthMonth'] . '-' . $_POST['birthYear'];
           
            $sqlReg = $db->prepare("INSERT INTO `users`(`username`, `firstName`, `lastName`, `email`, `passwordHash`, `dob`,
            `verCode`, `verified`, `membership`, `lastLogin`, `lastIp`) VALUES (?,?,?,?,?,?,?,?,?,?,?)");
            $sqlReg->execute(array($_POST['username'],
                                $_POST['firstName'],
                                $_POST['lastName'],
                                $_POST['email'],
                                $passwordHash,
                                $dob,
                                $verCode,
                                'no',
                                'basic',
                                time(),
                                $ip));
           
            $_SESSION['ID'] = $db->lastInsertId();
           
            $_SESSION['serial'] = time();
           
            // send verification code
           
            $msg = 'Welcome to Front Page Ads. Please enter the code at the link below with login details. \n
                 Vercode: '.$verCode.'';
    
            // use wordwrap() if lines are longer than 70 characters
            $msg = wordwrap($msg, 70);
           
            $headers = "From: webmaster@frontpageads.ca" . "\r\n";
    
            // send email
            mail($_POST['email'],"frontpageads registration",$msg, $headers);
           
            header('Location: ../../verify.php');
            exit;
           
        }else{
            // go back for form with error
           
            header('../../register.php?error='.urlencode($errors[0]).'');
            exit;
           
        }
       
    ?>
    PHP:
     
    Jeremy Benson, Jan 7, 2016 IP
  9. Jeremy Benson

    Jeremy Benson Well-Known Member

    Messages:
    364
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    123
    #9
    I think the first place to look is password_hash(). It dropped the PASSWORD_DEFAULT... I'm not sure how to replace it.

    http://www.serverphorums.com/read.php?7,1197575

    http://php.net/manual/en/function.password-hash.php

    Any ideas? Thanks.
     
    Jeremy Benson, Jan 7, 2016 IP
  10. Jeremy Benson

    Jeremy Benson Well-Known Member

    Messages:
    364
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    123
    #10
    Okay, this is weird. Aside from the server on my domain throwing an internal error without description I'm getting problems in WAMP. I decided to go back and check my code. When I send the regform with the following code I get a blank screen. I have <h2> around line 46 that should output. I'm getting nothing.

    This code is set up for debugging, so you'll see various header tags along the way, nothing pops up.

    <?php
    
        require('../../data/sqldata.php');
        require('../classes/pValidator.php');
        session_start();
       
        $errors = array();
       
        $validator = new pValidator;
       
        $validator->test_blank($_POST['birthMonth'], 'dob month');
        $validator->test_blank($_POST['birthDay'], 'dob day');
        $validator->test_blank($_POST['birthYear'], 'dob year');
        $validator->test_blank($_POST['country'], 'country');
       
        $validator->test_length($_POST['username'],4, 16, 'username');
        $validator->test_length($_POST['firstName'],1, 32,  'first name');
        $validator->test_length($_POST['lastName'],1, 32, 'last name');
        $validator->validate_email($_POST['email']);
        $validator->test_length($_POST['password'],4,16, 'password');
        $validator->test_length($_POST['password2'],4,16, 'password');
       
        $validator->validate_password($_POST['password'], $_POST['password2'], 'password');
       
        $errors = $validator->return_errors();
       
        // test is username or email was used
       
        try{
       
            $db = new PDO($dsn, $dbUsername, $dbPassword, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
       
        }catch(\PDOException $e){ echo "Error creating $db:" . $e->getMessage();}
       
        $sqlTest = $db->prepare("SELECT count(*) FROM `users` WHERE `username` = ? OR `email` = ?");
        $sqlTest->execute(array($_POST['username'], $_POST['email']));
        $userCount = $sqlTest->fetchColumn();
       
        if($userCount > 0)
        {
           
            // header back to register with error
            header('../../register.php?error='.urlencode('username taken, or email used').'');
            exit;
        }
       
        var_dump($errors);
        echo '<h2>Validation done.</h2>';
       
        if(empty($errors))
        {
            // register the user
            echo '<h2>Send to db.</h2>';
            $ip = $_SERVER['REMOTE_ADDR'];
            $passwordHash = password_hash($_POST['password'], PASSWORD_DEFAULT);
            $verCode = md5(mcrypt_create_iv(12));
           
            $dob = $_POST['birthDay'] . '-' . $_POST['birthMonth'] . '-' . $_POST['birthYear'];
           
            try{
            $sqlReg = $db->prepare("INSERT INTO `users`(`username`, `firstName`, `lastName`, `email`, `passwordHash`, `dob`,
            `verCode`, `verified`, `membership`, `lastLogin`, `lastIp`) VALUES (?,?,?,?,?,?,?,?,?,?,?)");
            $sqlReg->execute(array($_POST['username'],
                                $_POST['firstName'],
                                $_POST['lastName'],
                                $_POST['email'],
                                $passwordHash,
                                $dob,
                                $verCode,
                                'no',
                                'basic',
                                time(),
                                $ip));
           
            $_SESSION['ID'] = $db->lastInsertId();
            }catch(\PDOException $e){echo "error sending data:" . $e->getMessage();}
            $_SESSION['serial'] = time();
           
            // send verification code
           
            $msg = 'Welcome to Front Page Ads. Please enter the code at the link below with login details. \n
                 Vercode: '.$verCode.'';
    
            // use wordwrap() if lines are longer than 70 characters
            $msg = wordwrap($msg, 70);
           
            $headers = "From: webmaster@frontpageads.ca" . "\r\n";
    
            // send email
            mail($_POST['email'],"frontpageads registration",$msg, $headers);
           
            header('Location: ../../verify.php');
            exit;
           
        }else{
            // go back for form with error
            echo '<h2>Errors in $errors</h2>';
            header('../../register.php?error='.urlencode($errors[0]).'');
            exit;
           
        }
       
    ?>
    PHP:
     
    Jeremy Benson, Jan 7, 2016 IP
  11. Jeremy Benson

    Jeremy Benson Well-Known Member

    Messages:
    364
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    123
    #11
    Alright, the error in local host is the db connection. I found the error by commenting out code.

     try{
     
            $db = new PDO($dsn, $dbUsername, $dbPassword, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
     
        }catch(\PDOException $e){ echo "Error creating $db:" . $e->getMessage();}
     
        $sqlTest = $db->prepare("SELECT count(*) FROM `users` WHERE `username` = ? OR `email` = ?");
        $sqlTest->execute(array($_POST['username'], $_POST['email']));
        $userCount = $sqlTest->fetchColumn();
    PHP:
    Connection Vars

    $dbHost = "localhost";
    $dbPort = "3306";
    $dbUsername = "root";
    $dbPassword = "";
    $dbName = "frontpage";
    
    $dsn = "mysql:host=$dbHost;port=$dbPort;dbname=$dbName";
    PHP:
    It doesn't make sense though. My hompage makes a db connection and works fine.
     
    Jeremy Benson, Jan 7, 2016 IP
  12. Jeremy Benson

    Jeremy Benson Well-Known Member

    Messages:
    364
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    123
    #12
    Ugh, this is now solved. I have no idea what issue was. I kept tweaking things here and there. Thanks for the comments.
     
    Jeremy Benson, Jan 7, 2016 IP