Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
spiritual bypass
Feb 19, 2008

Grimey Drawer
It's for our own use, probably all on the same server.

Adbot
ADBOT LOVES YOU

v1nce
Sep 19, 2004

Plant your brassicas in may and cover them in mulch.
Can you ask someone with the "vision" of what this is for if the functionality site-to-site is expected to deviate? Like, a single feature of SiteA will do something different to SiteZ for whatever reason? In most systems the answer is that some deviation is going to be needed, and in that case it's often difficult to maintain a one-code-fits-all approach, unless you go bat-poo poo crazy with per-site config.

If part of the goal is a lack of deviation, then you can probably just throw one copy of the code at the server and maintain that. If it isn't, you'll need to modularise a little bit more to make as much common code as possible, and attach unique features as needed (think wordpress and plugins).

What's the intention of the different sub-sites? Are you going to just apply minor theme differences (a logo here, colours there) or are you going to want entirely different templates on a per-page basis with the same back-end?

If it's the former, I'd probably set an environment variable dependant on the subdomain, and then have AppKernel pick an additional config file based on the var. That gives you small but configurable changes, but a central codebase and one set of templates.

If it's the latter, you could make one primary bundle which is responsible for figuring out what theme/settings/whatever to load, and all your real code calls on that service. The service is then responsible for "getting" the theme (or whatever) that should currently be running.
Individual themes, provided by another bundle(s) could then register with that service, either by Event or by service tagging. It just has to determine which sub-service to use, and act as a Service Locator or a Facade if you're sure it's a load-once set-once never-deviate arrangement. Just remember to use interfaces.

As to if you make them individual bundles or one bundle.. that comes down to how you expect this thing to work, and what it's for. There's no reason you can't support multiple themes in one bundle, and then just include a single theme in each bundle if that's the route you decide to go later on.

Experto Crede
Aug 19, 2008

Keep on Truckin'
The PHP pages aren't very clear on this, but how good is the is_numeric() function at detecting numbers with some non-numeric characters in?

Basically, trying to detect phone numbers, which may have a + or may have ( ) in them, etc. and some may also just be something like Anonymous or Unknown, etc. (with some other variations possible too, so I'd like to avoid hardcoding checks against those)

Obviously if it gets passed something like anonymous or unknown then is_numeric will reject it, but will it work with something like +44.1234567890 or (012345) 456789?

spiritual bypass
Feb 19, 2008

Grimey Drawer
If I understand it correctly, it'll reject anything that wouldn't be a numeric literal when you type it into a PHP program

McGlockenshire
Dec 16, 2005

GOLLOCKS!
If you're validating a phone number you should probably treat it like a phone number.

Experto Crede
Aug 19, 2008

Keep on Truckin'

McGlockenshire posted:

If you're validating a phone number you should probably treat it like a phone number.

Holy poo poo, somehow my googling for phone validation never found that. Thanks!

Agrikk
Oct 17, 2003

Take care with that! We have not fully ascertained its function, and the ticking is accelerating.
I am connecting to a SQL Server 2014 instance using PHP 5.4.24 and I am trying to figure out why this isn't working:

code:
$version = sqlsrv_query('SELECT @@VERSION');
$row = sqlsrv_fetch_array($version);

echo $row[0];
The connection is established and there are no errors that I can see, but it doesn't return anything. Anyone have any ideas?

Impotence
Nov 8, 2010
Lipstick Apathy
print_r(sqlsrv_errors());, sqlsrv_query i don't think returns anything on failures

..also why are you.. why..

Agrikk
Oct 17, 2003

Take care with that! We have not fully ascertained its function, and the ticking is accelerating.

Biowarfare posted:

..also why are you.. why..

Why not?

code:
if( $conn ) {
     echo "Connection established.<br><br>";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}


$sql = "sqlsrv_query('SELECT @@VERSION')";
$result = sqlsrv_query($conn, $sql);

if( $result === false ) {
     die( print_r( sqlsrv_errors(), true));
}
Returns nothing.

Agrikk fucked around with this message at 04:41 on Jun 29, 2015

Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS

Agrikk posted:

Why not?

code:
if( $conn ) {
     echo "Connection established.<br><br>";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}


$sql = "sqlsrv_query('SELECT @@VERSION')";
$result = sqlsrv_query($conn, $sql);

if( $result === false ) {
     die( print_r( sqlsrv_errors(), true));
}
Returns nothing.

Try this
PHP code:
$result = sqlsrv_query($conn, "SELECT @@VERSION");

if( $result === false ) {
     die( print_r( sqlsrv_errors(), true));
}

karms
Jan 22, 2006

by Nyc_Tattoo
Yam Slacker
also why are you telling print_r to not output the errors but to return a string, which you then immediately send to die that outputs it anyway?


PHP code:
$result = sqlsrv_query($conn, "SELECT @@VERSION");

if( $result === false ) {
     print_r(sqlsrv_errors());
     die;
}

ZeldaLeft
Oct 15, 2004
Waiting in the mirrors of the Hotel Lobby
I went through the last 50 pages of this thread, ran a few searches and didn't find any discussion on this so here goes:
I'm not new to coding but I am new to PHP.


1. Can one use php to automate twitter/facebook functions such as post, like, share, retweet, accept friend requests, follow, etc?
2. If yes, Can it be done to mulitple accounts at once?
3. If yes, what areas of php do I want to turn my focus to?
4. If no, any ideas on what does?

ZeldaLeft fucked around with this message at 23:44 on Jun 29, 2015

fletcher
Jun 27, 2003

ken park is my favorite movie

Cybernetic Crumb

ZeldaLeft posted:

I went through the last 50 pages of this thread, ran a few searches and didn't find any discussion on this so here goes:
I'm not new to coding but I am new to PHP.


1. Can one use php to automate twitter/facebook functions such as post, like, share, retweet, accept friend requests, follow, etc?
2. If yes, Can it be done to mulitple accounts at once?
3. If yes, what areas of php do I want to turn my focus to?
4. If no, any ideas on what does?

Your questions don't really have anything do with PHP. You're basically just asking "Does twitter have an API?" and the answer is yes they do: https://dev.twitter.com/rest/public

Your next question might be "Can PHP interact with a REST API?" and the answer is yes it can

Maybe you want to look through the PHP twitter libraries that people have built: https://dev.twitter.com/overview/api/twitter-libraries#php (this was the first result for 'twitter php')

Disharmony
Dec 29, 2000

Like a hundred crippled horses lying crumpled on the ground

Begging for a rifle to come and put them down
Wordpress question but involves PHP functions: How do I make the "Read More" button appear only for posts with more than 120 words?

v1nce
Sep 19, 2004

Plant your brassicas in may and cover them in mulch.
Your question is a bit like "How do I get a housing permit" and you're expecting us to already know where you live and the type of house you want the permit for. Any chance you can provide some better context, like a cut-down chunk of the PHP source where the ReadMore button should be displayed, plus the outer loop that lists all the posts?

As an example, take a look at archive.php, you'll probably see something like:
php:
<?
if (have_posts()) {
    while(have_posts()) {
        the_post();
        // ..
    }
}
?>
That's your basic post-display loop. You'll want to look for that if whichever template file (page-something.php, category.php?) you're trying to add the button to.

Somewhere in there you can throw the following:
php:
<?
?><a href="<?php get_permalink(); ?>">Read More</a><?php
?>
I think. I barely do any Wordpress.

If you're worried about posting a mammoth amount of code because you don't know what to cut out and what not to cut out, use pastebin or something.

Impotence
Nov 8, 2010
Lipstick Apathy

fletcher posted:

Your questions don't really have anything do with PHP. You're basically just asking "Does twitter have an API?" and the answer is yes they do: https://dev.twitter.com/rest/public

Your next question might be "Can PHP interact with a REST API?" and the answer is yes it can

Maybe you want to look through the PHP twitter libraries that people have built: https://dev.twitter.com/overview/api/twitter-libraries#php (this was the first result for 'twitter php')

Also the answer to a few of these is also "yes, but I'm pretty sure that you will need to verify your twitter/fb account with either phone or credit card, and if you plan on doing anything dumb like mass spamming follows and add requests you'll just get terminated"

Bartie
Mar 20, 2006

You must defeat Sheng Long to stand a chance.
What am I missing here? I'm trying to get a time period to iterate through, say each day of five weeks from now. From what I could tell, the best way of doing this is by using DateTime and creating a DatePeriod. It's probably worth mentioning that it's a plugin for the Craft CMS which might be messing it up. The PHP version is 5.6.

php:
<?
$start = new DateTime();
$end = $start->modify("+5 weeks");
$interval = DateInterval::createFromDateString('1 day');
$dateRange = new DatePeriod($start, $interval, $end);?>
Fatal error: Class 'Craft\DatePeriod' not found in D:\xampp\htdocs\craft\plugins\vacationschedule\variables\VacationScheduleVariable.php on line 57

Impotence
Nov 8, 2010
Lipstick Apathy
try new \DatePeriod

you might have use hijack the.
edit: use Craft\Craft probably is.

Bartie
Mar 20, 2006

You must defeat Sheng Long to stand a chance.

Biowarfare posted:

try new \DatePeriod

you might have use hijack the.
edit: use Craft\Craft probably is.

Sweet, it worked! I should have figured it was Craft being an rear end. Thanks so much!

v1nce
Sep 19, 2004

Plant your brassicas in may and cover them in mulch.

Bartie posted:

Sweet, it worked! I should have figured it was Craft being an rear end. Thanks so much!

That's a namespace issue. If there's a namespace My\Dumb\Library; declaration at the top of the file then you'll need to specify the namespace of classes you're using within that file, with use statements.
Without the corresponding use declarations, you need to specify the absolute class paths for PHP to find your classes.

What this means is, to use DateTime (or any other class) in a file with a namespace you have to specify it as \DateTime - with the prefixed slash (because DateTime sits in PHP's root namespace, \).

If you don't want to do that - because technically it's an absolute class reference - you can instead specify it using the use keyword at the top of the file:
code:
use \DateTime;
Now when you do $x = new DateTime; you'll see you don't need to specify the absolute namespace (the slash), because the use statement has already told PHP where to look for that class.

So what? I saved you one keystroke by making you type 14. Well, the magic of this is if you need to override it some time down the track. You simply change your use declaration to:
code:
use \MyLib\Date\MagicDate as DateTime;
And now all your code uses the MagicDate class under the hood rather than \DateTime.

Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS
Full disclosure, it has nothing to do with Craft specifically and everything to do with autoloader namespacing.

See: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md

Bartie
Mar 20, 2006

You must defeat Sheng Long to stand a chance.

v1nce posted:

That's a namespace issue. If there's a namespace My\Dumb\Library; declaration at the top of the file then you'll need to specify the namespace of classes you're using within that file, with use statements.
Without the corresponding use declarations, you need to specify the absolute class paths for PHP to find your classes.

What this means is, to use DateTime (or any other class) in a file with a namespace you have to specify it as \DateTime - with the prefixed slash (because DateTime sits in PHP's root namespace, \).

If you don't want to do that - because technically it's an absolute class reference - you can instead specify it using the use keyword at the top of the file:
code:
use \DateTime;
Now when you do $x = new DateTime; you'll see you don't need to specify the absolute namespace (the slash), because the use statement has already told PHP where to look for that class.

So what? I saved you one keystroke by making you type 14. Well, the magic of this is if you need to override it some time down the track. You simply change your use declaration to:
code:
use \MyLib\Date\MagicDate as DateTime;
And now all your code uses the MagicDate class under the hood rather than \DateTime.

Blinkz0rz posted:

Full disclosure, it has nothing to do with Craft specifically and everything to do with autoloader namespacing.

See: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md

I see, thanks a lot for the explanations!

Fenyur
Feb 1, 2009
I am a Graphic Designer that has taken on the Front End as well as the Back End of building websites for a small local business. I was working with someone else who was the main back-end coder for all of our Website needs but has since moved on. Until we find someone elseI I am to fill both roles.

I understand HTML pretty well and have created several fully functional websites. In order to speed up production of websites at the same time of keeping Aesthetics in mind, our business model is based on sound templates and reworking them to fit our needs. That being said, I have taken on two sites that would like a simple contact form on their website and while I have the form on the form and it is functional, the issue is that I cannot get a form of verification to prevent spammers.

I originally wanted to use reCAPTCHA 2.0 since it seemed pretty straight forward and I have tried for weeks trying to get it to work on the sites. I looked all around the Internet on forums, stackoverflow and anything else I could find, only to put myself into a bigger hole. I then moved onto a simple php math equation to verify the user... Failed again. I have taught myself the basics of PHP and very little Javascript to understand the language a little bit more but I'm still having trouble.

I feel like I am really close to solving this simple problem, but I just keep creating more problems for myself. Anyway... I would appreciate if someone could help me resolve my PHP verification issue. I'm indifferent to the technique used for verification.

Below is my form stripped of any fancy stuff, Once I can get my verification working, I can figure out how to add anything extra.

code:
<form id="contact" class="row" name="form1" method="post" action="send.php">
    <div class="span4">
        <label>Name</label>
        <input type="text" class="full" name="name" id="name"/>
    </div>
    <div class="span4">
        <label>Email</label>
        <input type="email" class="full" name="email" id="email"/>
    </div>
    <div class="span8">
        <label>Message</label>
        <textarea cols="10" rows="10" name="message" id="message" class="full"></textarea>
        <p id="btnsubmit">
            <input type="submit" id="send" value="Send" class="btn btn-large"/>
        </p>
    </div>
</form>
Below is the php code that was given to me from the template:

php:
<?php
session_start();

    $email_to "example@email.com"// change with your email
    $name     $_POST['name'];  
    $email    $_POST['email'];
    $subject  $_POST['subject'];
    $message  $_POST['message'];
    
    $headers  "From: $email\r\n";
    $headers .= "Reply-To: $email\r\n";
    
    if(mail($email_to$subject$message$headers)){
        echo "success";       
    } 
    else{
        echo "failed";     
    }
?>

Below is the Javascript that was given for the form:

code:
    $(document).ready(function(){
      $("#send").click(function(){
        var name   = $("#name").val();
        var email  = $("#email").val();
        var message  = $("#message").val();

        var error = false;

         if(email.length == 0 || email.indexOf("@") == "-1" || email.indexOf(".") == "-1"){
           var error = true;
           $("#error_email").fadeIn(500);
         }else{
           $("#error_email").fadeOut(500);
         }
         if(message.length == 0){
            var error = true;
            $("#error_message").fadeIn(500);
         }else{
            $("#error_message").fadeOut(500);
         }
         
         if(error == false){
           $("#send").attr({"disabled" : "true", "value" : "Loading..." });
            
           $.ajax({
             type: "POST",
             url : "send.php",    
             data: "name=" + name + "&email=" + email + "&subject=" + "Form Submission:" + "&message=" + message,
             success: function(data){    
              if(data == 'success'){
                $("#btnsubmit").remove();
                $("#mail_success").fadeIn(500);
              }else{
                $("#mail_failed").html(data).fadeIn(500);
                $("#send").removeAttr("disabled").attr("value", "send");
              }     
             }  
           });  
        }
		    return false;                      
      });    
    });
Thank you in advance for any help.

Fenyur fucked around with this message at 13:45 on Jul 20, 2015

Acer Pilot
Feb 17, 2007
put the 'the' in therapist

:dukedog:

Is there a go to framework for implementing a rest api? I'm guessing there's something in pear, if that still exists.

Been awhile since I've written in php so any help would be appreciated.

Thanks

musclecoder
Oct 23, 2006

I'm all about meeting girls. I'm all about meeting guys.

Acer Pilot posted:

Is there a go to framework for implementing a rest api? I'm guessing there's something in pear, if that still exists.

Been awhile since I've written in php so any help would be appreciated.

Thanks

PEAR is long dead - use Composer instead for vendoring.

Lots of options for APIs. If you need a large one, Symfony, Laravel, or Zend are probably the go-to frameworks (Zend has Apigility I think which is for building APIs). Symfony has FOSRestBundle or you can roll your own, and I'm sure Laravel has something.

If you need something quick-n-dirty, use any of the number of micro-frameworks out there (Symfony has Silex and Laravel has Lumen). What size application are you going to be building?

Acer Pilot
Feb 17, 2007
put the 'the' in therapist

:dukedog:

Not very big, basically an over glorified crud app that just grabs stuff from a MySQL db. Just want to switch the site to use more JavaScript and would be nice to keep php out of the presentation layer.

musclecoder
Oct 23, 2006

I'm all about meeting girls. I'm all about meeting guys.
Probably any one of the micro-frameworks I mentioned would be a good start.

PBCrunch
Jun 17, 2002

Lawrence Phillips Always #1 to Me
I know VERY little about PHP.

I am running a Raspberry Pi 2 webcam running motion on Raspbian. This works fine for clients with plenty of bandwidth. For my phone, I want to be able to pull up a page with the last frame taken by the camera. Lucky for me, motion puts still frames in /tmp/motion, which is on a small RAMdisk on the Pi.

I want to make some PHP to copy the last picture taken into a folder where it can be served via Apache (also on the RPi2). I have cobbled together some code to identify the most recent file in the directory:

code:
<?php
        error_reporting(E_ALL);
        $result = shell_exec('ls -lt /tmp/motion/*.jpg | head -1 | xargs -n 1 | tail -1');
        $command = "cp " . $result . " /tmp/newest.jpg";
        exec($command);
?>
I have also tried using PHP copy() to copy the file, with no success.

code:
<?php
        error_reporting(E_ALL);
        $result = shell_exec('ls -lt /tmp/motion/*.jpg | head -1 | xargs -n 1 | tail -1');
        $command = "cp " . $result . " newest.jpg";
        copy($result, "/tmp/newest.jpg");
?>
I used some echo statements in the HTML to make sure that $result and $command were OK, and the assembled $command works when I copy and paste it into a command line. Nothing happens when PHP tries to execute it, though. I think I am probably running into some kind of permissions problem. Any ideas?

I have done some testing with exec() and touch, and I can create files and folders within the /tmp folder in PHP. I think PHP lacks the permissions to access the files created by motion. How can I tell motion to create the files in a way that PHP can touch?

EDIT: I did some monkey business with symlinks, and now I can just get the name of the latest file and use that in my HTML code. Nothing to see here.

PBCrunch fucked around with this message at 23:57 on Aug 10, 2015

McGlockenshire
Dec 16, 2005

GOLLOCKS!
(e: This is still valid even if you've already worked around the problem)

There's nothing there that you need PHP for. Given that you're just shelling out for everything, you'd may as well just write it as a shell script.

code:
#!/bin/bash
set -euo pipefail
LATEST_FILE=`ls -1t /foo/bar/*.jpg | head -1`
#echo "Copying $LATEST_FILE..."
cp -f $LATEST_FILE /var/www/latest.jpg
The the -1 (that's a number one, not a lowercase letter L) option to ls causes it to emit one filename per line. The -t sorts by timestamp, descending. The -f option to cp will force it to delete and recreate the destination if it already exists. The set line at the top turns on helpful error checking in bash, which will make troubleshooting what you think might be permission problems pretty easy.

Newf
Feb 14, 2006
I appreciate hacky sack on a much deeper level than you.
I've just configured a mysql database on a godaddy hosted site. phpMyAdmin is telling me that the server is hosted at 50.62.209.154:3306, but the following

php:
<?
$mysqlServer = "http://50.62.209.154";
$user = "...";
$pw = "...";
$db = "email_database";

$conn = new mysqli($mysqlServer, $user, $pw, $db);
?>
produces

Warning: mysqli::mysqli() [<a href='mysqli.mysqli'>mysqli.mysqli</a>]: (HY000/2005): Unknown MySQL server host 'http://50.62.209.154' (11001) in G:\PleskVhosts\mybadwebsite.com\httpdocs\staging\php\contact.php on line 40

The error is the same whether I include/exclude the port and the 'http://'. Any suggestions?

Newf fucked around with this message at 17:23 on Aug 16, 2015

Impotence
Nov 8, 2010
Lipstick Apathy
$dbh = new PDO('mysql:host=50.62.209.154;port=3306;dbname=email_database', $user, $pw);

Pile Of Garbage
May 28, 2007



Probably not a good idea to have the MySQL instance listening on anything other than localhost, assuming your web-server is on the same server.

Newf
Feb 14, 2006
I appreciate hacky sack on a much deeper level than you.

Biowarfare posted:

$dbh = new PDO('mysql:host=50.62.209.154;port=3306;dbname=email_database', $user, $pw);

Hm, yes, that worked. Thanks!

cheese-cube posted:

Probably not a good idea to have the MySQL instance listening on anything other than localhost, assuming your web-server is on the same server.

Will likely have a followup on this later this evening. I'm new with php, mysql, godaddy, and dealing with hosting at all, so I've been doing a lot of guesswork.

Impotence
Nov 8, 2010
Lipstick Apathy

Newf posted:


Will likely have a followup on this later this evening. I'm new with php, mysql, godaddy, and dealing with hosting at all, so I've been doing a lot of guesswork.

iirc godaddy shared hosting has mysql running non-locally, and users are ip-restricted to the shared hosting machine and localhost

Newf
Feb 14, 2006
I appreciate hacky sack on a much deeper level than you.

Biowarfare posted:

iirc godaddy shared hosting has mysql running non-locally, and users are ip-restricted to the shared hosting machine and localhost

Ah. My intention is to write a small desktop app that pulls data from this db - I guess this means that I'll have to write some data-serving php glue rather than connecting to the db directly.

Pile Of Garbage
May 28, 2007



All the same I'd recommend configuring iptables or something similar to block inbound connections to all ports other than the specific ones you require (e.g. 22, 80, 443, etc.). If your web-server and MySQL server are on different servers then just configure rules on the MySQL server to only allow connections to tcp/3306 from your web-servers public IP.

Edit: if your only clients will be behind a single NATed public IP address then configure your server-side firewall thusly. If the application is meant to be accessible from anywhere then you will probably need to setup an authenticated API of sorts to handle requests (Can't really provide recommendations on this myself but others in this thread can).

Pile Of Garbage fucked around with this message at 18:00 on Aug 17, 2015

Impotence
Nov 8, 2010
Lipstick Apathy

Newf posted:

Ah. My intention is to write a small desktop app that pulls data from this db - I guess this means that I'll have to write some data-serving php glue rather than connecting to the db directly.

https://www.godaddy.com/help/connect-remotely-to-databases-4978

Pile Of Garbage
May 28, 2007




The big takeaway from that is that "Direct database connections do not support secured (SSL) connections." You do not want to do this (Here's a great reason why: http://forums.somethingawful.com/showthread.php?noseen=0&threadid=2803713&pagenumber=258#post398884189). Setup an authenticated API which the application can connect to instead.

Edit: vvv yah that's the same post I linked idgi vvv

Pile Of Garbage fucked around with this message at 18:13 on Aug 17, 2015

Impotence
Nov 8, 2010
Lipstick Apathy

cheese-cube posted:

The big takeaway from that is that "Direct database connections do not support secured (SSL) connections." You do not want to do this (Here's a great reason why: http://forums.somethingawful.com/showthread.php?noseen=0&threadid=2803713&pagenumber=258#post398884189). Setup an authenticated API which the application can connect to instead.

Or better yet, just don't use godaddy for anything

If you're going to be distributing the application you don't want to put mysql stuff in there anyway, see http://forums.somethingawful.com/showthread.php?noseen=0&threadid=2803713&pagenumber=258#post398884189

Adbot
ADBOT LOVES YOU

Newf
Feb 14, 2006
I appreciate hacky sack on a much deeper level than you.
That's all awful, yeah, but my scope here is small. I'm putting something together here for a family member who wants an online booking/contact system on the cheap for his personal business. He already has his godaddy hosting at an extremely low price.

Are these security concerns bad enough that I shouldn't proceed? Would it suffice to configure the remote connection as readonly? I don't expect that there's a great threat of cyber-espionage in the local roofing market.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply