Script werkt niet meer na upgrade van PHP-versie (5.6 naar 7.x)
Omdat er technisch onderweg nog wel eens iets mis kan gaan, sla ik de kaarten die getrokken zijn op in een my_sql database. Dit werkt prima onder PHP 5.6, maar onder versie 7.1 niet meer. Nu ben ik absoluut geen kenner van PHP, waar kan dit aan liggen? De instellingen zijn bijgesloten.
Ik hoor het graag.
Met vriendelijke groet,
Tim Hoogland
Gewijzigd op 14/02/2018 15:19:37 door Tim Hoogland
Verder is "werkt niet" ook niet duidelijk. Want wat gebeurt er?
Gewijzigd op 14/02/2018 16:02:39 door - Ariën -
Inderdaad gebruikte ik de oude mysql functies. Werkt niet, wil in dit verband zeggen dat er niets wordt weggeschreven in de database. Mijn code hiervoor is:
Code (php)
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
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
<?php
mysqli_connect($dbhost1, $dbuser1, $dbpass1);
//Select Database
mysqli_select_db($dbname1) or die(mysqli_error());
// Retrieve data from Query String
//Ip-adres
$ipAdres = $_SERVER["REMOTE_ADDR"];
//today
$date = date("Y-m-d H:i:s");
//site = rtlo
$site = 110341;
echo $site;
$kaart1 = $_GET['krtnum1'];
$kaart2 = $_GET['krtnum2'];
$kaart3 = $_GET['krtnum3'];
echo $kaart1;
echo $kaart2;
echo $kaart3;
$query = "INSERT INTO kaartleggingen(IPadres,Site,Datum,Kaart1,Kaart2,Kaart3,Kaart4,Kaart5,Kaart6,Kaart7,Kaart8,Kaart9)
VALUES ('$ipAdres','$site','$date','$kaart1','$kaart2','$kaart3','$kaart4','$kaart5','$kaart6','$kaart7','$kaart8','$kaart9')";
//Execute query
$qry_result = mysqli_query($query) or die(mysqli_error());
while($row = mysqli_fetch_array($qry_result)){
}
?>
mysqli_connect($dbhost1, $dbuser1, $dbpass1);
//Select Database
mysqli_select_db($dbname1) or die(mysqli_error());
// Retrieve data from Query String
//Ip-adres
$ipAdres = $_SERVER["REMOTE_ADDR"];
//today
$date = date("Y-m-d H:i:s");
//site = rtlo
$site = 110341;
echo $site;
$kaart1 = $_GET['krtnum1'];
$kaart2 = $_GET['krtnum2'];
$kaart3 = $_GET['krtnum3'];
echo $kaart1;
echo $kaart2;
echo $kaart3;
$query = "INSERT INTO kaartleggingen(IPadres,Site,Datum,Kaart1,Kaart2,Kaart3,Kaart4,Kaart5,Kaart6,Kaart7,Kaart8,Kaart9)
VALUES ('$ipAdres','$site','$date','$kaart1','$kaart2','$kaart3','$kaart4','$kaart5','$kaart6','$kaart7','$kaart8','$kaart9')";
//Execute query
$qry_result = mysqli_query($query) or die(mysqli_error());
while($row = mysqli_fetch_array($qry_result)){
}
?>
Zit hier nog andere verouderde code bij?
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 14/02/2018 16:47:04 door - Ariën -
Ook loont het de moeite om een test(- of ontwikkel)omgeving in te richten die representatief is voor de nieuwe live omgeving. Daar kun je dan ook eens proberen om het melden + weergeven van fouten aan te zetten.
Dat gezegd hebbende, mysqli_query() heeft een verplichte eerste parameter waarin je de database-connectie moet meegeven.
Terug naar de tekentafel?
Verder kan het waarschijnlijk ook geen kwaad om je eens te verdiepen in wat security-gerelateerde zaken, want bovenstaande code stemt mij niet bepaald hoopvol.
Zo zul je eerst je mysqli_connect() moeten aanpassen. Deze heeft ook een vierde waarde voor je databasenaam. Dan hoef je mysqli_select_db() niet te gebruiken.
Verder kan je de eventuele fouten die in de connectie optreden ophalen met mysqli_connect_errno().
Fouten in queries kan je ophalen met mysqli_error($conn), waarbij $conn verwijst naar de variabele van je connectie (die nu nog geen variabele heeft).
Tevens is het zeer aan te bevelen om MySQL de instructies te geven welke characterset je gebruikt
Code (php)
Met dit script hierboven ben je al een stap in de goede richting.
Verder is er nog op te merken dat je nu erg vatbaar bent voor hacking d.m.v. SQL-injection, omdat mysqli_real_escape_string() ontbreekt op je GET-waardes. Deze functie hoor je toe te passen op waardes die de gebruiker kan manipuleren zoals POST, GET, COOKIE en mogelijk ook ENV.
Verder is de opzet van je database ook niet erg optimaal ==> Normalisatie
Gewijzigd op 14/02/2018 16:48:14 door - Ariën -
Als ik naar de screenshots in de openingspost kijk, kan het ook nog wel handig zijn om een vinkje bij de module nd_mysqli te zetten...
Het heeft volgens mij alles te maken met het oproepen van de database, aangezien het script gegevens uit deze database presenteert op een pagina in mijn website. Wie kan mij helpen op bepaalde codes uit dit script om te zetten en ook te zorgen, dat de database niet gehackt kan worden?
De website zelf werkt prima onder php 7.1 maar alleen daar waar ik connectie maak met de database gaat het mis.
Deze doe ik dicht om het topic schoon te houden.
Gewijzigd op 10/08/2018 10:00:40 door - Ariën -