Php7 platform overgezet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4 5 6 volgende »

Thomas van den Heuvel

Thomas van den Heuvel

03/10/2018 17:25:43
Quote Anchor link
Een onversleuteld wachtwoord lijkt mij sowieso geen goede zaak. Ik gebruik zelf altijd dubbele quotes in HTML. In zekere zin maakt het (blijkbaar) niet uit wat je gebruikt. Het belangrijkste is dat je hier zelf lijn in aanbrengt.

Daarnaast is het zaak dat je de DATA die uit oogpunt van HTML mogelijk speciale karakters kan bevatten onschadelijk maakt. Je komt bijvoorbeeld in de problemen als $inlogpassword een enkele quote bevat, of bijvoorbeeld een sluitingshaak ( > ). Dit doe je met escaping-functies zoals htmlspecialchars().

Ook lijken mij mengvormen als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $paginanaam;?>?<?=$doorgeven;?>

Ongewenst.

Dit kun je ook combineren tot één PHP-blok:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $paginanaam.$doorgeven; ?>

De punt rijgt de twee stringwaarden aan elkaar.

Zorg gewoon dat alle dynamische content binnen PHP-blokken valt, en alle niet-dynamische content hier buiten valt. Er is geen enkele reden om statische lappen HTML te echo'en want je kunt een PHP-blok te allen tijde afsluiten en weer openen.
 
PHP hulp

PHP hulp

19/04/2024 17:15:55
 
Margot Schuitemaker

Margot Schuitemaker

03/10/2018 22:38:16
Quote Anchor link
Ik ben die mengvorm aan het herstellen en zie dan telkens weer wat anders wat ik moet aanpassen. Ik heb nu weer alles gebackupd en teruggezet in sftp ivm met die mengvorm o.a. Ik ga alles weer nalopen op die html dubbele quotes.






Toevoeging op 03/10/2018 22:45:38:

Waar ik nu weer tegenaan loop is het volgende. Misschien hebben jullie een idee?
Na het verzenden van artikelen uit order.php wordt je direct ingelogd in mijnorder.php om deze te bekijken. Mijn echtgenoot krijgt dan een mailtje met betreffende artikelen, prijzen en afzender. Je kunt op iedere pagina weer uitloggen en dan kom je weer in een andere pagina. Maar dat gebeurt niet meer en ik weet niet waarom. Er verschijnt een wit scherm en het ip-adres is dan http://rspp.nl/uitlog.php?/order.php
Dit gebeurt ook wanneer ik alles in https://www.rspp.nl enz. heb gewijzigd.
Ik heb alle pagina's weer gebackupd om dit te opnieuw te testen, maar helaas kom ik niet meer in b.v. index.php. Kan iemand even meekijken naar mijn uitlogscript hieronder?
Er staat een ook stukje java in en ik heb ook al gekeken of dit nog wel actueel is en er window.location.replace van gemaakt, maar dat werkt ook niet. Ook tevergeefs heb ik er https:// enz. van gemaakt.

Hieronder in code mijn oude uitlog-script.

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
74
75
76
77
78
<?php
session_start();
Header('Cache-Control: no-cache');
Header('Pragma: no-cache');
include 'library/config.php';
include 'library/opendb.php';
include 'library/puchfunctions.php';

//GEWIJZIGD mysql NAAR mysqli PER JANUARI 2016 IVM MIGRATIE PHP 5.6

$con = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
if (!$con)
  {

  die('Could not connect: ' . mysqli_connect_error());
  }

  mysqli_select_db($con,$dbname);
  
  logpagina($sessie); //schrijf deze pagina-hit in big sister

function waarschuwing($msg) {
//geeft de waarschuwing $msg als windows alert
echo "<script language=\"javascript\">alert(\"".$msg."\");</script>";
}

  
$paginanaam=$_SERVER['PHP_SELF'];
$doorgeven=$_SERVER['QUERY_STRING'];

$query="update Sessions set member_ID='' where SessionID='".$sessie."'";
mysqli_query($con,$query) or die(mysqli_connect_error());

waarschuwing("U bent nu uitgelogd");
?>

<html>
<head>
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-42779813-1', 'rspp.nl');
  ga('send', 'pageview');

</script>
<script type="text/javascript" language="JavaScript">
function nieuw(){
    location.replace("http://rspp.nl<?=$doorgeven;?>");
}
</script>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-7771863-2");
pageTracker._trackPageview();
} catch(err) {}</script>
<meta name="description" content="Puchlinks van interne en externe sites. Steekwoorden, informatie en kennis op de site www.rspp.nl. Verwijzing naar andere Puch- en Tomos websites.">
<meta name="keywords" content="puchliefhebber, technische vraagbaak, puch, liefhebber, rubriek, specifiek, puchprobleem, behandelen, technische vraagbaak, specifiek puchprobleem, eigen import, toerritjes, 2008, puchwinkeltje, puchparts, rspp, ruud schuitemaker puch, denfeld zadeldek, puch skytrack, lucia, dedus achterlicht, 50, mv, schuitemaker">
<meta name="robots" content="noodp, noydir, index, follow">
<meta name="revisit-after" content="3 month">
<meta name="author" content="webspanning">
<title>Uitloggen</title>
<!-- cilinder, koelkappen, carterdelen -->
<link href="rspp.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<div id="container">
<!--<h4>U wordt uitgelogd</strong>--><script type="text/javascript" language="JavaScript">nieuw(); </script>
 <!--<br>
</h4>-->
<?php
include 'library/closedb.php';
?>

<!--eind container--></div>
</body>
</html>





Toevoeging op 03/10/2018 22:46:30:

Hopelijk worden jullie niet gek van mijn gevraag :)
 
Thomas van den Heuvel

Thomas van den Heuvel

03/10/2018 23:06:42
Quote Anchor link
JavaScript voor een HTML-document? :/

We zitten ook niet meer in de jaren 90, dus een alert is nogal... retro.

Waar komt $sessie vandaan en ben je ook nagegegaan of sessies ook goed geconfigureerd zijn nu je bent overgestapt naar https (als daar sprake van is)?
 
Margot Schuitemaker

Margot Schuitemaker

03/10/2018 23:39:05
Quote Anchor link
De college die de website heeft gebouwd destijds was een C++ programmeur en hij vond dat kennelijk leuk. Het was volgens mij voor hem toen ook een uitdaging :) Wij zijn ook niet de jongeste meer, haha.
Hij heeft toen een statistiekpagina gebouwd die we bigsister hebben genoemd en daar staat alles vwb de orders.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
//ik wil hier een loop over alle orders

$query="select ID,SessionID,Datum, Tijd,remote_addr,pagina,browser,komtvan,IP from Sessions where remote_addr not in ('80.101.18.47') order by ID desc";
#where ID>165
$result  = mysqli_query($con,$query) or die($query.'    Error, query failed. ' . mysqli_connect_error());
while($row = mysqli_fetch_array($result)) {
list($ID,$SessionID,$Datum, $Tijd,$remote_addr,$pagina,$browser,$komtvan,$IP) = $row;
?>
 
Thomas van den Heuvel

Thomas van den Heuvel

04/10/2018 02:05:40
Quote Anchor link
Niet $SessionID, maar $sessie.

Regel 28:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$query="update Sessions set member_ID='' where SessionID='".$sessie."'";
 
Margot Schuitemaker

Margot Schuitemaker

04/10/2018 22:23:03
Quote Anchor link
SessionID is de de sleutel van de Sessions-tabel
 
Thomas van den Heuvel

Thomas van den Heuvel

05/10/2018 16:34:55
Quote Anchor link
Waar komt de PHP-variabele $sessie vandaan? Niet de database kolomnaam of wat dan ook.

Een witte pagina duidt op fouten, check je logs.
 
Margot Schuitemaker

Margot Schuitemaker

05/10/2018 22:43:21
Quote Anchor link
ex-collega heeft een puchfunctie script met ongeveer 400 rijen geschreven waar alle variabele en functies instaan, waaronder ook $sessie

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
function leesnieuwepagina($categorie,$cat,$sessie) {
//deze functie vult het array $aantal[] met de bestellingen die eerder in de categorie besteld zijn in deze sessie
//invoer: $categorie, een string met de waarden 'frame', 'wiel', of 'motor'
//invoer: $cat, een karakter met de waarden 'F', 'W', of 'M'
//invoer: $sessie
global $aantal;
//lees de $schrijf
 
- Ariën  -
Beheerder

- Ariën -

05/10/2018 22:46:41
Quote Anchor link
Globals.... iewl! ;-)

Waarom niet als argument in je functie meegeven? Dan heb je tenminste een goed overzicht wat je in je functie binnen neemt.
 
Thomas van den Heuvel

Thomas van den Heuvel

06/10/2018 02:10:33
Quote Anchor link
:)

Maar dat is een functie-parameter, niet een variabele die geldig is in de globale scope. Een functieparameter is meestal een "placeholder" voor een andere variabele. Daarnaast is de scope (het geldigheidsgebied) van een functie-parameter het gedeelte tussen { accolades }, dus daarbuiten bestaat (deze) $sessie niet.

$sessie, de variabele op regel 28 van je uitlogscript zal dus ergens gedeclareerd moeten staan in de globale scope, dus ergens in:
- /library/config.php (of een vervolg-include)
- /library/opendb.php (of een vervolg-include)
- /library/puchfunctions.php (of een vervolg-include)

En anders is deze variabele gewoonweg niet gedeclareerd ("bestaat deze niet").

Ik zou je errorlogs raadplegen om te kijken wat er misgaat als je deze uitlogpagina aanroept.
 
Margot Schuitemaker

Margot Schuitemaker

06/10/2018 22:09:11
Quote Anchor link
Hoi Thomas,

Ik vond de variabele $sessie in punchfunctie
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
// HIERONDER GEEN FUNKTIE. DE CODE HIERONDER WORDT ALTIJD UITGEVOERD (en functies alleen als je ze aanroept)
//zoek alvast nuttige info
$sessie = session_id();
$pathinfo = $_SERVER['PHP_SELF'];
$membernaam="";
$dezepagina=str_replace("/","",$pathinfo);


Je bedoeld onderstaande error logs welke je al hiervoor aangaf. Ik zal deze in alle pagina's helemaal bovenaan het script toevoegen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
error_reporting(E_ALL);

ini_set('display_errors',1);
 
Thomas van den Heuvel

Thomas van den Heuvel

06/10/2018 22:40:17
Quote Anchor link
De webserver houdt als het goed is al het een en ander (stilzwijgend) bij, in een directory genaamd /logs of equivalent boven de webdirectory. Zowel bezoek (doorgaans in access.log) als foutmeldingen (doorgaans in error.log) worden daar als het goed is geregistreerd.
 
Margot Schuitemaker

Margot Schuitemaker

06/10/2018 23:57:51
Quote Anchor link
Oh ja, dus error_repporting hoeft dus ook niet in mijn index.php?

Je had het eerder over, dat het verstandig is om htmlspecialchars te gebruiken voor b.v. $_POST. Hoe zet ik dat neer in onderstaand statement? Of gebruik je htmlspecialchars alleen na een echo en voor $_post?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$password1=trim($_POST['password1']);
 
- Ariën  -
Beheerder

- Ariën -

07/10/2018 00:02:12
Quote Anchor link
Ja, htmlspecialchars() gebruik je alleen als je de data toont.
Trouwens, waarom zou je een password door htmlspecialchars halen? Die echo je sowieso niet, of je wilt graag een bijzonder security-lek inkoppen.

Passwords moet je met Bcrypt opslaan, met password_hash() en daarna controleren met password_verify()

Maarre, heeft dit nog met de overgang naar PHP7 te maken? :-P
Gewijzigd op 07/10/2018 00:03:00 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

07/10/2018 00:10:54
Quote Anchor link
Alle output die je in een HTML document wilt weergeven maar niet als HTML wilt interpreteren (maar als platte tekst) dien je door htmlspecialchars() heen te halen.

Een wachtwoord dien je versleuteld op te slaan, dus die komt nooit meer als platte tekst terug omdat het originele wachtwoord nergens (in die vorm) opgeslagen zou mogen zijn.
 
Margot Schuitemaker

Margot Schuitemaker

13/10/2018 23:42:54
Quote Anchor link
Dag Thomas en anderen,

Er is weer een heleboel mis met mijn website. Voordat ik in mijndomein het platform omzet van php 5.6 naar php7.1 heb ik alle webpagina’s gewijzigd:
http/rspp.nl/ enz > https:/rspp.nl/enz
<? > <?php
<?= > <?php echo enz

Problemen in order.php
Wanneer ik het @-teken verwijder in order.php en deze upload in sftp, dan krijg ik foutmeldingen in order.php pagina en deze verwijzen naar onderstaande lijnen. Er wordt niets berekend. Wanneer ik de @-tekens terugzet dan wel weer en komt de bestelling in de mailbox [email protected]

@-TEKEN (onderdrukking) in order.php voor :
Lijn 60: if (strlen(trim(@$_POST['alverzonden']))>1) {$doen=0;}
Lijn 83: if (@$_POST['verzend']) {
Lijn 109: @$remote_addr."','".$password1."')";
Lijn 152: @$totaalprijs=$totaalprijs+($prijs*(int)$aantal[$i]);
Lijn 153: @$totaalaantal=$totaalaantal+(int)$aantal[$i];
Lijn 168: $totaalbericht.='<td>'.@$totaalaantal.'
Lijn 169: $totaalbericht.='<td>'.maakeuros(@$totaalprijs).

Probleem met uitlog.php en mijnorder.php - kan niet uitloggen
Met de knop OK uit bedankt.php kom je weer in index.php, dan zie je links boven dat je bent ingelogd en links onder in het menu kun je uitloggen en mijnorder bekijken.
Bij mijnorder.php staat dan een lege order 0,00. Wanneer ik op de knop uitloggen klik, kom ik b.v. op de homepage terecht met een wit scherm. Wanneer ik opnieuw de url rspp.nl site opvraag staat er soms nog mijn welkomsnaam links bovenaan en onderaan het menu nog de knop uitloggen.

Probleem in winkelwagen.php
Wanneer je in categorie frame, motor of wiel een artikel invoert b.v. 5 en je wijzigt het artikel in b.v. 3 in winkelwagen.php, dan wordt er niets berekend 0,00 en ook geen artikelfoto meer.

Artikel wijzigen in winkelwagen.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
<select name="invoer<?php echo $i ?>" id="invoer<?php echo $i ?>" onChange="document.forms['guestform'].submit();">

<?php
for ($q=0; $q < 10; $q++) {
    // wat is het aantal wat geselecteerd zou moeten zijn voor item $i > $i=0?
    $selectedValue = isset($aantal[$i]) ? $aantal[$i] : 0;
    // dit is de huidige optie
    $selected = ($selectedValue == $q ? ' selected="selected"' : '');
    // ingeval het aantal gelijk is aan 0 willen we "&nbsp;" afdrukken in plaats van het aantal
    $label = ($q == 0 ? '&nbsp;' : $q);
    ?>

  <option value="<?php echo $q ?>"<?php echo $selected ?>><?php echo $label ?></option>
  <?php
}
?>

</select>


Artikelfoto in winkelwagen.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$plaatje='<img src="https://rspp.nl/afbeeldingen/winkelfotos/'.$thumb.'">';
if ($thumb=='') {$plaatje='geen foto beschikbaar';};


Is het mogelijk dat iemand mij hierbij helpt? Zou ik ooit mijn website weer goed draaiende krijgen:) ?

Groet, Margot
Gewijzigd op 14/10/2018 00:04:30 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

14/10/2018 00:05:52
Quote Anchor link
Een beste tip: Vermijd @'jes in de code, en zet error-reporting uit op je live site, en schrijf de foutmeldingen naar een error_log, als dat nog niet gedaan wordt.

En laat de errors hier ook graag even weten!
Gewijzigd op 14/10/2018 00:07:18 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

14/10/2018 14:39:27
Quote Anchor link
Urf.

Wat mij betreft mag je hier best vragen blijven stellen, maar op deze manier gaat het omzetten (of meer een fatsoenering van code die lang op zich heeft laten wachten) wel erg lang duren want elk probleem wat je aanboort zal in een soort van schaakspelvorm behandeld moeten worden. Het zou veel handiger zijn als iemand hier direct "hands on" aan werkt.

Misschien is het ook handig dat je een soort van testomgeving inricht (hetzij op een lokaal opgezet webservertje, hetzij online) die representatief is voor de live omgeving zodat je daar eerst de wijzigingen door kunt voeren en testen. Ontwikkelen op een live omgeving is meestal niet zo handig, vooral als dit een (redelijk) centraal deel uitmaakt van de broodwinning.

Ook zou ik je aanraden om een soort van versiebeheer toe te passen op code, zodat je wijzigingen beter bij kunt houden en je een betere garantie hebt dat er straks niet tig varianten van eenzelfde codebestand rondzwerven. Of je moet een soort van stramien hebben die hier zorg voor draagt (bijvoorbeeld door eerst altijd bestanden te downloaden voordat je deze wijzigt en weer upload ofzo). Dit laatste is mogelijk minder complex, maar bewerkelijker.

Een @ kan zijn nut hebben, maar wordt vaak misbruikt om fout(meldig)en te onderdrukken. Hiermee veeg je in dit geval potentiële problemen onder het tapijt.

Het feit dat getracht wordt foutmeldingen op $_POST variabelen te onderdrukken vertelt mij dat er niet echt een scheiding is (in code) tussen de weergave van het formulier en de afhandeling na verzending hiervan. Dit is vrijwel nooit handig en resulteert vaak in een onoverzichtelijke brei (spaghetti code) met een of meer spagaten door middel van if-else statements om te bepalen wat er moet gebeuren (weergeven formulier, of toch verwerking hiervan?). Het is vele malen handiger om deze verschillende acties (beter) te compartimenteren zodat deze acties ook in afzondering behandeld (en mogelijk belangrijker: gedebugged) kunnen worden.

Dit zou een ideale oplossing zijn, en ik begrijp dat je eerst alles weer op de rails wilt krijgen maar het is wel iets om over na te denken: je kunt alles wel oppoetsen maar als de onderliggende programmastructuur/architectuur niet echt je dat is dan laat je de deur toch een beetje half open staan voor (al dan niet toekomstige) issues.

Ook maakt het ontbreken van een soort van algehele structuur het oplossen van dingen die niet naar behoren werken complexer omdat je bij elk issue het hele systeem in beschouwing moet nemen, in plaats van een enkel, en losstaand, onderdeel. Nu is de applicatie een beetje een baksteen.
Gewijzigd op 14/10/2018 14:43:56 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

14/10/2018 14:49:06
Quote Anchor link
Thomas van den Heuvel op 14/10/2018 14:39:27:

Ook zou ik je aanraden om een soort van versiebeheer toe te passen op code, zodat je wijzigingen beter bij kunt houden en je een betere garantie hebt dat er straks niet tig varianten van eenzelfde codebestand rondzwerven. Of je moet een soort van stramien hebben die hier zorg voor draagt (bijvoorbeeld door eerst altijd bestanden te downloaden voordat je deze wijzigt en weer upload ofzo). Dit laatste is mogelijk minder complex, maar bewerkelijker.

En versiebeheer-systeem is wel handig, maar het opzetten ervan vergt ook een flinke 'know-how' en een goed model hoe je het project uitrolt naar de live omgeving. Ik denk dat een goed stramien met downloaden, uploaden en een gelijkmatige LAMP/WAMP/MAMP testomgeving voor een beginner de beste keuze is.

Ikzelf heb zelfs een aparte domeinnaam geregistreerd voor testdoeleinden. Want ik ontwikkel op Windows en draai live op Linux en test het op die manier ook daar op uit.
 
Rob Doemaarwat

Rob Doemaarwat

14/10/2018 16:00:18
Quote Anchor link
Daar hoef je (meestal) niet perse een aparte domeinnaam voor te registreren. Als het gewoon een simpele website is, zonder callbacks vanaf anders servers of iets dergelijks, dan kun je als ServerName (in je Apache config) gewoon een "fantasie domeinnaam" aanmaken en die vervolgens aan je Windows "hosts" bestand toevoegen.
 

Pagina: « vorige 1 2 3 4 5 6 volgende »



Overzicht Reageren

 
 

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.