phpmysql webhosting gebruiken voor apps

Overzicht

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Werner g

werner g

01/12/2021 09:07:59
Anchor link
Hallo,

Ik ben gestart met het ontwikkelen van apps in react native (voor Android en IOS). Voor mijn app wil ik de phpmyadmin gebruiken van mijn website via Hostnet. De opgeslagen gegevens wil ik analyseren omdat ik een data science en postgresql cursus heb gevolgd. Hierdoor is sqlite niet mogelijk.

Als thuis server kan ik via mijn laptop een koppeling maken via Xampp. Omdat ik dan dag en nacht een computer aan moet laten staan wil ik mijn webhosting gebruiken. Maar hoe kan ik mijn app koppelen aan de phpmyadmin van mijn webhosting? Ik kan geen bestand in htdocs zetten. Ik heb contact opgenomen met Hostnet maar die hebben hier helaas geen verstand van.

Hopelijk kan iemand mij verder helpen :)
 
PHP hulp

PHP hulp

26/09/2022 01:00:48
 
- Ariën  -
Beheerder

- Ariën -

01/12/2021 09:23:42
Anchor link
Ik vrees dat je een denkfout maakt. phpMyAdmin is geen database, maar een beheertool voor MySQL- en MariaDB-databases.

Als je thuis verbinding met je database wilt hebben, dan kan je dat proberen. Maar het kan ook dat zij de toegang in hun firewall geblokkeerd hebben.
 
Adoptive Solution

Adoptive Solution

01/12/2021 09:29:24
Anchor link
Wellicht helpt deze uitleg.

https://helpdesk.hostnet.nl/hc/nl-nl/articles/360015074837-Externe-toegang-toekennen-aan-databases


Ik kan van mijn thuis nas met de database bij hostnet een verbinding maken.
 
- Ariën  -
Beheerder

- Ariën -

01/12/2021 09:41:40
Anchor link
En bovendien maak je die koppeling in je script. Ik raad het af om je wachtwoord naar je database in een app te plaatsen.

Je laat immers je sleutels ook nooit achter in je auto als je deze parkeert.

Als je app's toegang wilt geven tot jouw database die jij bijv. thuis of bij je hosting draait. Maak dan een eigen API. Laat de Android-app dan contact zoeken met jouw server op bijv. https://www.jouwserver.nl/api.php. En laat dan via POST of GET via de app de gegevens doorsturen, waarna jij die verwerkt.
Gewijzigd op 01/12/2021 09:47:52 door - Ariën -
 
Werner g

werner g

01/12/2021 10:42:53
Anchor link
Bedankt voor de reacties. Ik begrijp inderdaad niet helemaal hoe het precies werkt. Op internet wordt ik ook niet echt wijzer na 2 weken zoeken.

Met een api bedoel je de php file neem ik aan (Database.php, DataBaseConfig.php, login.php, signup.php)? Die heb ik al 1 geschreven via Visual Studio Code en geplaatst is Xampp (wat dus eigenlijk niet hoeft om de database van hostnet te gebruiken). Het gedeelte in de app zelf (contact zoeken website, POST/GET) dat begrijp. Ik zie alleen niet het totaal plaatje.

MySQL is de database in hostnet, die wordt beheert door Phpmyadmin. Door het php bestand (api) kan ik phpmyadmin verbinden met de app.
Moet ik de gegevens van hostnet in mijn DataBaseConfig.php bij servername, username, password, databasename zetten? Dus ook paswoord. Wat moet ik met dit bestand doen als ik de database van mijn webhosting wil gebruiken? Ik kan hem niet plaatsen in Xampp?

PS: als ik de link naar hostnet bekijk, wat zou ik dan bij "Vul het IP-adres in van de server of het (thuis)netwerk waarvan je verbinding gaat maken." in moeten vullen.

Wat ik veel lees over xampp:
Database of the Project
1st let's create a database to store the login credentials of the users. The database is created using MySQL. (XAMPP is needed as a pre-requisite)
Gewijzigd op 01/12/2021 11:02:30 door werner g
 
- Ariën  -
Beheerder

- Ariën -

01/12/2021 11:11:45
Anchor link
Je hebt een database bij Hostnet die je kan gebruiken, maar ik hoor je ook over XAMPP (met MySQL/MariaDB) die je op je eigen PC thuis draait.

Wát ga je nu gebruiken?

Als ik zelf een beslissing zou nemen zou ik alles lekker hosten bij Hostnet. Stel je voor dat een grondwerker in je buurt je glasvezelkabel of koperkabeltje door midden hakt of een stroomstoring je huis tergt, dan kan de data niet verzameld worden. De hosting bij Hostnet is ongetwijfeld redundant in stroomvoorziening en verbindingen. Plus dat ze uitgebreide support hebben bij storingen.

Een thuisservertje met XAMPP vind ik meer leuk voor de spielerij of voor ontwikkeldoeleinden. En dan hoef je niet eens de poorten van buiten naar binnen te openen in je firewall. De makers van XAMPP raden zelfs aan om hun product niet voor productiedoeleinden te gebruiken.

In mijn beschreven situatie is het voldoende om in je app een verbinding naar https://www.jouwsitebijhostnet.nl/api.php te maken, die daar alles afhandelt. Dan hoef je ook niet thuis te klooien met verbindingen naar Hostnet etc...
Gewijzigd op 01/12/2021 11:16:47 door - Ariën -
 
Werner g

werner g

01/12/2021 11:26:40
Anchor link
Ik heb het eerst via Xampp geprobeerd. Bij veel voorbeelden staat namelijk dat Xampp verplicht is om phpmyadmin te gebruiken. Voorbeelden zonder Xampp zijn betaald (bijv. firebase gebruiken ipv mysql). Ik ben opzoek naar een gratis oplossing via hostnet omdat ik nog geen inkomsten uit apps heb.
 
- Ariën  -
Beheerder

- Ariën -

01/12/2021 11:38:22
Anchor link
Ik herhaal het nog maar eventjes: phpMyAdmin is enkel een beheertool. Ikzelf gebruik HeidiSQL op mijn eigen lokale pc.
Je bent dus nooit verplicht om phpMyAdmin te gebruiken.

Je kan prima tijdens het ontwikkelen HeidiSQL gebruiken, en op je webhosting phpMyAdmin. Ikzelf ga nog een stap verder en werk op mijn server in de commandline.

Maar je zit toch al bij Hostnet met hosting en een domein? Maar omdat je het gratis wilt, wil je daar vanaf? Begrijp ik?
Gewijzigd op 01/12/2021 11:41:07 door - Ariën -
 
Werner g

werner g

01/12/2021 11:47:49
Anchor link
Dat begrijp ik, terugkomend op mijn vraag: Met een api bedoel je de php file neem ik aan. Kan ik hiervoor dezelfde file gebruiken die ik gemaakt het voor Xampp (Database.php, DataBaseConfig.php, login.php, signup.php)? Of zit ik hier helemaal verkeerd en bedoel je wat anders met een api?
 
- Ariën  -
Beheerder

- Ariën -

01/12/2021 11:53:14
Anchor link
Een API is inderdaad een serverside script, in bijv. PHP geschreven die aanroepen uitvoert.

Deze draait je dan natuurlijk in productie bij Hostnet.
 
Werner g

werner g

01/12/2021 13:09:15
Anchor link
Ben met het bovenstaande terug gegaan naar hostnet. In eerste instantie kon het niet maar na doorvragen heb ik antwoord gekregen. Ik kan het php script via FTP uploaden naar myphpadmin.

Bedankt voor de hulp.
 
- Ariën  -
Beheerder

- Ariën -

01/12/2021 13:12:07
Anchor link
Huh? Een PHP-script uploaden naar phpMyAdmin? Leg eens uit?

Ik heb het idee dat je nog niet echt begrijpt wat het doel van phpMyAdmin is? Tevens is het ook een merkwaardige reactie van hun.
Gewijzigd op 01/12/2021 13:12:44 door - Ariën -
 
Werner g

werner g

01/12/2021 13:34:09
Anchor link
Dit is wat ik als reactie heb gekregen:

U moet via de FTP de script plaatsen op de hosting pakket van (mijnwebsite).nl en wij ondersteunen inderdaad php scripts.

Dus kort gezegd, u moet de script via FTP op uw hosting pakket zetten en dan via de PHPmyadmin de waardes goed zetten zoals u het wenst.

----
Volgens mij is mysql de database en phpmyadmin de software waardoor het beschikbaar is via internet. Naar mijn idee zou je een api moeten maken en uploaden naar phpmyadmin zodat het verbinding kan maken met de app.
 
- Ariën  -
Beheerder

- Ariën -

01/12/2021 14:08:02
Anchor link
Wat hun zeggen klopt, alleen jij zei het verkeerd.
 
Ward van der Put
Moderator

Ward van der Put

01/12/2021 14:54:14
Anchor link
Laat je niet op het verkeerde been zetten door het "php" in de naam phpMyAdmin: phpMyAdmin is een tool voor het beheren van MySQL-databases die is geschreven in PHP, maar je hebt phpMyAdmin niet nodig om zelf databases te benaderen met PHP. Alles wat phpMyAdmin kan dankzij PHP, kun je zelf ook bouwen in PHP. En meer.
 
Ivo P

Ivo P

01/12/2021 15:57:16
Anchor link
Werner gast op 01/12/2021 13:34:09:
Volgens mij is mysql de database en phpmyadmin de software waardoor het beschikbaar is via internet. Naar mijn idee zou je een api moeten maken en uploaden naar phpmyadmin zodat het verbinding kan maken met de app.


Ja, Mysql is de database.
Maar die is van zichzelf al verbonden met internet. Mogelijk, of eerder waarschijnlijk, geblokkeerd door een firewall, maar die database is een zelfstandig draaiende service.
Net als Apache en vsFTPd dat bijvoorbeeld zijn.

phpMyAdmin is een tool voor de ontwikkelaar om te kunnen kijken in de database: structuren (tabellen, views etc) aanmaken en data erin zetten of bewerken.

Maar phpMyadmin heb je niet nodig. Er zijn alternatieven. Webgebaseerd zoals phpmyadmin, zodat je die in de browser draait, maar het kan ook met HeidiSQL of als je daar toegang toe hebt, via de command line (via SSH).

PHP scripts zet je normaal op de server (in je hostingpakket) en dan wordt dat door Apache uitgevoerd (mbt de php executable).
Dus als je al wilt zeggen dat je je api.php ergens "op" zet dan zou dat Apache zijn.

vervolgens kan je in dat script, laten we het api.php noemen, iets als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php mysqli_connect(); ?>
doen om een verbinding met die database te maken.
En dan kun je query's afschieten op die database.

Het resultaat daarvan zou je in kunnen pakken in "xml" of "json" en dat naar de browser of Android app kunnen terugsturen.

Maar phpmyadmin is een overbodig stuk software in een productieproces.
Gewijzigd op 01/12/2021 22:20:28 door Ivo P
 
Werner g

werner g

02/12/2021 09:24:09
Anchor link
Ik ben inderdaad nog niet echt thuis in de termen buiten het programmeren om.
Dit maakt het wel een stuk duidelijker, thxs :)

Zou ik dan ook nog iets moeten veranderen (behalve servername, username, password, databasename (zie *******)) in DataBaseConfig.php of DataBase.php? Login.php en Signup.php zijn al gemaakt.

De database is al ingericht.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

class DataBaseConfig
{
    public $servername;
    public $username;
    public $password;
    public $databasename;

    public function __construct()
    {


        $this->servername = '********';
        $this->username = '*******';
        $this->password = '*******';
        $this->databasename = '*******';

    }
}


?>




Of in DataBase.php?


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
require "DataBaseConfig.php";

class DataBase
{
    public $connect;
    public $data;
    private $sql;
    protected $servername;
    protected $username;
    protected $password;
    protected $databasename;

    public function __construct()
    {

        $this->connect = null;
        $this->data = null;
        $this->sql = null;
        $dbc = new DataBaseConfig();
        $this->servername = $dbc->servername;
        $this->username = $dbc->username;
        $this->password = $dbc->password;
        $this->databasename = $dbc->databasename;
    }

    function
dbConnect()
    {

        $this->connect = mysqli_connect($this->servername, $this->username, $this->password, $this->databasename);
        return $this->connect;
    }

    function
prepareData($data)
    {

        return mysqli_real_escape_string($this->connect, stripslashes(htmlspecialchars($data)));
    }

    function
logIn($table, $username, $password)
    {

        $username = $this->prepareData($username);
        $password = $this->prepareData($password);
        $this->sql = "select * from " . $table . " where username = '" . $username . "'";
        $result = mysqli_query($this->connect, $this->sql);
        $row = mysqli_fetch_assoc($result);
        if (mysqli_num_rows($result) != 0) {
            $dbusername = $row['username'];
            $dbpassword = $row['password'];
            if ($dbusername == $username && password_verify($password, $dbpassword)) {
                $login = true;
            }
else $login = false;
        }
else $login = false;

        return $login;
    }

    function
signUp($table, $gender, $age, $eater_type, $email, $username, $password)
    {

        $gender = $this->prepareData($fullname);
        $age = $this->prepareData($fullname);
        $eater_type = $this->prepareData($username);
        $email = $this->prepareData($email);
        $username = $this->prepareData($email);
        $password = $this->prepareData($password);
        $password = password_hash($password, PASSWORD_DEFAULT);
        $this->sql =
            "INSERT INTO " . $table . " (gender, age, eater_type, email, username, password) VALUES ('" . $gender . "','" . $age . "','" . $eater_type. "','" . $email . "''" . $username . "','" . $password . "')";
        if (mysqli_query($this->connect, $this->sql)) {
            return true;
        }
else return false;
    }

}


?>
 
- Ariën  -
Beheerder

- Ariën -

02/12/2021 09:45:09
Anchor link
Opsich niks mis mee, hoewel logIn() en signUp() niet in een Database class behoort.
 
Werner g

werner g

02/12/2021 10:01:35
Anchor link
Top, dan ga ik daarmee verder !!
Bedankt voor alle hulp en snelle reacties :)
 
Ivo P

Ivo P

02/12/2021 10:58:40
Anchor link
misschien een puntje van aandacht: (afgezien van dat je $gender nu met de fullname vult)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

    function signUp($table, $gender, $age, $eater_type, $email, $username, $password)
    {

        $gender = $this->prepareData($fullname);
        $age = $this->prepareData($fullname);
        $eater_type = $this->prepareData($username);
        $email = $this->prepareData($email);
        $password = $this->prepareData($password);
        $password = password_hash($password, PASSWORD_DEFAULT);
        $this->sql =
            "INSERT INTO " . $table . " (gender, age, eater_type, email, username, password) VALUES ('" . $gender . "','" . $age . "','" . $eater_type. "','" . $email . "''" . $username . "','" . $password . "')";
        if (mysqli_query($this->connect, $this->sql)) {
            return true;
        }
else return false;
    }

?>


Deze functie zal nog steeds werken.
Maar ik heb 1 regel verwijderd. ($username) Die wordt nu niet escaped.
Daarom zou ik een van deze 2 werkwijzes voorstellen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $email_esc = $this->prepareData($email); ?>


En dan $email_esc in de query plaatsen.
Of
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$this
->sql =
            "INSERT INTO " . $table . " (gender, age, eater_type, email, username, password)
VALUES ('"
. $this->prepareData($gender) . "',
        '"
. $this->prepareData($age) . "',
        '"
. $this->prepareData($eater_type). "',
        '"
. $this->prepareData($email) . "',
        '"
. $this->prepareData($username) . "',
        '"
. $password . "')";
?>


Daarmee ben je er zeker van dat in de query alles "beveiligd" is

Verder is de hash van een ge-escaped password niet per se gelijk aan de hash van het echte password.
En de hash hoeft niet ge-escaped te worden...
 
Werner g

werner g

02/12/2021 11:22:12
Anchor link
De aanpassingen heb ik verwerkt, ik heb voor optie 1 gekozen.
Ga nu de rest in expo afmaken, hoop dat het werkt :)
 

Pagina: 1 2 volgende »

 

Dit topic is gesloten.



Overzicht

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.