abonnement Unibet Coolblue Bitvavo
  woensdag 13 augustus 2014 @ 22:37:30 #181
187069 slacker_nl
Sicko pur sang
pi_143395737
In theory there is no difference between theory and practice. In practice there is.
pi_143396247
quote:
^O^
pi_143399449
quote:
Het is wel handig om te weten hoe het op basis niveau werkt.
Alles laten voorkauwen is niet goed als je nog een beginner bent.
  donderdag 14 augustus 2014 @ 08:25:08 #184
25889 Sitethief
Fulltime Flapdrol
pi_143403271
Bij ons in het bedrijf kregen we mail() functie alleen aan de praat als we ook een Return-Path aangaven.
Duurde even voor we daar achter waren gekomen...

1
2
$headers .= "Return-Path: <adminemail@yahoo.com>"."\n";
$headers .= "From: adminemail@yahoo.com <adminemail@yahoo.com>" . "\n";
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_143403768
quote:
0s.gif Op donderdag 14 augustus 2014 00:02 schreef totalvamp het volgende:

[..]

Het is wel handig om te weten hoe het op basis niveau werkt.
Alles laten voorkauwen is niet goed als je nog een beginner bent.
Dingen hergebruiken, dat is uiteraard niet goed als developer.

Als je echt wilt weten hoe het werkt, dan ga je al telnettend mail versturen (en RFC's lezen).
In theory there is no difference between theory and practice. In practice there is.
pi_143408267
quote:
0s.gif Op woensdag 13 augustus 2014 17:33 schreef superky het volgende:
Hoi ik heb een vraagje over een tutorial die ik ging volgen waarbij er de php mail() functie werd gebruikt. Hier is de link van de tutorial:

De php mail() functie werkt wel, omdat hij true als waarde terug geeft. Maar ik ontvang geen email als ik een account registreer. Dit had ik dus getest met de volgende stukje code:
[ code verwijderd ]

Maar ik weet nog steeds niet hoe ik dit probleem kan fixen. Kan iemand me misschien helpen?

Hier is de rest van mijn code die ik gebruik:
[ code verwijderd ]

Ook vind ik het geen probleem als iemand me wilt helpen via Skype. Omdat ik dat ook waardeer :).
Werk je op een lokale server? Je moet wel een mailserver (Tomcat) hebben en die (goed) instellen


Verder misschien een spamfilter ofzo? Je knalt ook de hele phpversion() in de headers. Lijkt me een beetje overbodig.
pi_143413048
quote:
0s.gif Op donderdag 14 augustus 2014 12:11 schreef remi1986 het volgende:

[..]

Werk je op een lokale server? Je moet wel een mailserver (Tomcat) hebben en die (goed) instellen

Verder misschien een spamfilter ofzo? Je knalt ook de hele phpversion() in de headers. Lijkt me een beetje overbodig.
Nee ik heb hem op een host staan bij 000webhost. Maar als er geen oplossing dan kan ik het beter laten. Ik ben nu toch die code aan het veranderen.
pi_143416484
quote:
0s.gif Op donderdag 14 augustus 2014 14:39 schreef superky het volgende:

[..]

Nee ik heb hem op een host staan bij 000webhost. Maar als er geen oplossing dan kan ik het beter laten. Ik ben nu toch die code aan het veranderen.
Swiftmailer was al gegeven. PHPMailer is ook nog een alternatief. Bespaart je een hoop ellende :)
pi_143418537
quote:
0s.gif Op donderdag 14 augustus 2014 12:11 schreef remi1986 het volgende:

[..]

Werk je op een lokale server? Je moet wel een mailserver (Tomcat) hebben en die (goed) instellen

Verder misschien een spamfilter ofzo? Je knalt ook de hele phpversion() in de headers. Lijkt me een beetje overbodig.
Tomcat? Apache tomcat bedoel je, das geen mailer. Verder wil je helemaal niet echt mailen in je tests. En als je dat doet wil je dat postfix oid je mail lokaal afvangt.
In theory there is no difference between theory and practice. In practice there is.
pi_143418955
quote:
0s.gif Op donderdag 14 augustus 2014 17:22 schreef slacker_nl het volgende:

[..]

Tomcat? Apache tomcat bedoel je, das geen mailer. Verder wil je helemaal niet echt mailen in je tests. En als je dat doet wil je dat postfix oid je mail lokaal afvangt.
Postfix ja klopt.

Naja of je iets wel of niet wil ga ik niet op in. Ik test iets liever een keer extra.
pi_143419168
quote:
0s.gif Op donderdag 14 augustus 2014 17:35 schreef remi1986 het volgende:
Postfix ja klopt.

Naja of je iets wel of niet wil ga ik niet op in. Ik test iets liever een keer extra.
Je gaat in je unit test niet echt mailen. Je integratietests zullen dat wel doen, maar in principe zal je in je testfiles gewoon een $mailer->send() uitvoeren en je wilt weten dat dat aangeroepen wordt, in je testfile zal je dan zelf een $mailer object hebben met dezelfde API en dan kan je daarna dingen doen als:

1
2
3
4
5
6
7
8
9
10
11
12
my $mailer = Mocked::Mailer->new();
{
    local *Mocked::Mailer::send = sub { return 1 };
    my $class = My::Class->new(mailer => $mailer);
    $class->do_mail_please();
}


    local *Mocked::Mailer::send = sub { die "I failed to send a mail" };
    my $class = My::Class->new(mailer => $mailer);
    dies_ok(sub { $class->do_mail_please(); }, qr/I failed to send a mail/, "Our mailer has died a horrible death");
}

Dat wil je weten, niet of je mailer wel werkt. Als je postfix verkeerd geconfigureerd is en je mail komt niet aan dan weet je nog niet of het aan je code ligt of aan je postfix. Das een andere test.
In theory there is no difference between theory and practice. In practice there is.
pi_143419533
quote:
0s.gif Op donderdag 14 augustus 2014 17:43 schreef slacker_nl het volgende:

[..]

Je gaat in je unit test niet echt mailen. Je integratietests zullen dat wel doen, maar in principe zal je in je testfiles gewoon een $mailer->send() uitvoeren en je wilt weten dat dat aangeroepen wordt, in je testfile zal je dan zelf een $mailer object hebben met dezelfde API en dan kan je daarna dingen doen als:
[ code verwijderd ]

Dat wil je weten, niet of je mailer wel werkt. Als je postfix verkeerd geconfigureerd is en je mail komt niet aan dan weet je nog niet of het aan je code ligt of aan je postfix. Das een andere test.
Oke, maar zo zei je dat niet.

En tevens heb je toch zo door of de fout in de code zit of niet. Kwestie van beetje kunnen debuggen.
pi_143419953
quote:
0s.gif Op donderdag 14 augustus 2014 17:56 schreef remi1986 het volgende:

[..]

Oke, maar zo zei je dat niet.

En tevens heb je toch zo door of de fout in de code zit of niet. Kwestie van beetje kunnen debuggen.
De fout zit altijd in je code, waar in je code is de vraag.. :)
In theory there is no difference between theory and practice. In practice there is.
pi_143420357
quote:
0s.gif Op donderdag 14 augustus 2014 18:11 schreef slacker_nl het volgende:

[..]

De fout zit altijd in je code, waar in je code is de vraag.. :)
prima, ga die discussie niet eens voeren ^O^
pi_143420399
quote:
0s.gif Op woensdag 13 augustus 2014 20:03 schreef superky het volgende:

Verder heb ik de headers ook aangepast maar alsnog krijg ik geen mailtje binnen :(. Zie hier de aanpassing:
[ code verwijderd ]

Headers moet je scheiden met \r\n, niet alleen \n (volgens de mailspecs). Verder is html mail lastiger dan plain text mail en zijn lange regels ook een mogelijk probleem. Dus in plaats van een kilometer aan html zou ik eerst eens een gewone korte regel als plain text versturen (en dus ook geen html headers). Als dat goed werkt, kun je stap voor stap verder gaan met complexere dingen proberen.

Mail() geeft true terug als het afleveren bij de verzendende server (die je hebt ingesteld in je php config) is gelukt. Da's vergelijkbaar met dat je iemand vraagt om een brief voor je te posten en hij reageert met "leg maar op m'n bureau". Al gaat die brief daarna rechtstreeks de papierversnipperaar in, je hebt hem wel kunnen neerleggen. En die verdere terugkoppeling krijg je niet.

Of, zoals al vaker is voorgesteld, het hele mailgebeuren uitbesteden aan iets als Swiftmailer.
pi_143421646
Iemand ervaring met codeigniter? :P
Redacted
  donderdag 14 augustus 2014 @ 20:11:02 #197
91039 mstx
2x1/2 = 1/2 x 1/2
pi_143423498
quote:
0s.gif Op donderdag 14 augustus 2014 19:14 schreef cablegunmaster het volgende:
Iemand ervaring met codeigniter? :P
:Y
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_143423581
quote:
1s.gif Op donderdag 14 augustus 2014 20:11 schreef mstx het volgende:

[..]

:Y
Korte vraag ik zat met een opvraging vraag, sql en alles hoe voer ik het in ? Daar bedoel ik mee met de complexe sql query's want je zit met een query schrijver? :? ( Inner joins ) en limits, waar de documentatie hierover te vinden is.
Redacted
  donderdag 14 augustus 2014 @ 20:29:19 #199
91039 mstx
2x1/2 = 1/2 x 1/2
pi_143424219
quote:
0s.gif Op donderdag 14 augustus 2014 20:13 schreef cablegunmaster het volgende:

[..]

Korte vraag ik zat met een opvraging vraag, sql en alles hoe voer ik het in ? Daar bedoel ik mee met de complexe sql query's want je zit met een query schrijver? :? ( Inner joins ) en limits, waar de documentatie hierover te vinden is.
Dit? https://ellislab.com/code(...)e/active_record.html
Zelf nooit gebruikt, ik vind dat echt lelijk.
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
  zaterdag 16 augustus 2014 @ 09:20:17 #200
355592 Djurres
Knowledge, Fuck it.
pi_143472272
Hoi lieve kinders. Jullie zijn vast veel beter met PHP als dat ik ben, maar toch ben ik lekker aan het hobbyen en heb een probleem.

Ik wil graag een aantal PDF bestanden (notulen) op slaan in de blob van een mysql database. Nu lukt dat allemaal aardig, en kan ik dit ook weergeven. Hier zit het probleem niet in.

Maar op het moment dat ik het bestand uit de database wil halen, dan krijg ik een File ID does not exist error. Ik heb een stukkie code van een tutorial gejat uiteraard, want ik kan nog niet van scratch beginnen. Wel snap ik de code, maar hier kan ik eigenlijk helemaal niet uitkomen.

De daadwerkelijke error die ik krijg staat in de foutafhandeling van get_file.php op lijn 40.

Hieronder de files die met het systeem te maken hebben

notulenu.php (hier staat het upload form'pje, niet echt van belang aangezien dit werkt)
add_file.php (verwerken van verstuurde notulen)
files.php (wat is er opgeslagen in de db?)
get_file.php (ophalen van de notulen uit de database)

get_file.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
    
// Make sure an ID was passed
    
if(isset($_GET['id'])) {
    
// Get the ID
        
$id intval($_GET['id']);
     
        
// Make sure the ID is in fact a valid ID
        
if($id <= 0) {
            die(
'The ID is invalid!');
        }
        else {
            
// Connect to the database
            
$dbLink = new mysqli('127.0.0.1''''''');
            if(
mysqli_connect_errno()) {
                die(
"MySQL connection failed: "mysqli_connect_error());
            }
     
            
// Fetch the file information
            
$query "
                SELECT `mime`, `name`, `size`, `data`
                FROM `filejtc`
                WHERE `id` = 
{$id}";
            
$result $dbLink->query($query);
     
            if(
$result) {
                
// Make sure the result is valid
                
if($result->num_rows == 1) {
                
// Get the row
                    
$row mysqli_fetch_assoc($result);
     
                  
//print headers
                    
header("Content-Type: "$row['mime']);
                    
header("Content-Length: "$row['size']);
                    
header("Content-Disposition: attachment; filename="$row['name']);
    
                    
// Print data
                    
echo $row['data'];
                }
                else {
                    echo 
'Error! No image exists with that ID.';
                }
     
                
// Free the mysqli resources
                
@mysqli_free_result($result);
            }
            else {
                echo 
"Error! Query failed: <pre>{$dbLink->error}</pre>";
            }
            @
mysqli_close($dbLink);
        }
    }
    else {
        echo 
'Error! No ID was passed.';
    }
    
?>

files.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
    
// Connect to the database
    
$dbLink = new mysqli('127.0.0.1''''''');
    if(
mysqli_connect_errno()) {
        die(
"MySQL connection failed: "mysqli_connect_error());
    }
     
    
// Query for a list of all existing files
    
$sql 'SELECT `id`, `name`, `mime`, `size`, `created` FROM `filejtc`';
    
$result $dbLink->query($sql);
     
    
// Check if it was successfull
    
if($result) {
        
// Make sure there are some files in there
        
if($result->num_rows == 0) {
            echo 
'<p>Er zitten nog geen bestanden in de database!</p>';
        }
        else {
            
// Print the top of a table
            
echo '<table width="100%">
                    <tr>
                        <td><b>Naam:</b></td>
                        <td><b>Soort bestand:</b></td>
                        <td><b>Grootte (bytes)</b></td>
                        <td><b>Aangemaakt</b></td>
                        <td><b>&nbsp;</b></td>
                    </tr>'
;
     
            
// Print each file
            
while($row $result->fetch_assoc()) {
                echo 
"
                    <tr>
                        <td>
{$row['name']}</td>
                        <td>
{$row['mime']}</td>
                        <td>
{$row['size']}</td>
                        <td>
{$row['created']}</td>
                        <td><a href='get_file.php?id=
{$row['id']}'>Download</a></td>
                    </tr>"
;
            }
     
            
// Close table
            
echo '</table>';
        }
     
        
// Free the result
        
$result->free();
    }
    else
    {
        echo 
'Error! SQL query failed:';
        echo 
"<pre>{$dbLink->error}</pre>";
    }
     
    
// Close the mysql connection
    
$dbLink->close();
    
?>

add_file.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    <?php
    
// Check if a file has been uploaded
    
if(isset($_FILES['uploaded_file'])) {
        
// Make sure the file was sent without errors
        
if($_FILES['uploaded_file']['error'] == 0) {
            
// Connect to the database
            
$dbLink = new mysqli('''''''');
            if(
mysqli_connect_errno()) {
                die(
"MySQL connection failed: "mysqli_connect_error());
            }
     
            
// Gather all required data
            
$name $dbLink->real_escape_string($_FILES['uploaded_file']['name']);
            
$mime $dbLink->real_escape_string($_FILES['uploaded_file']['type']);
            
$data $dbLink->real_escape_string(file_get_contents($_FILES  ['uploaded_file']['tmp_name']));
            
$size intval($_FILES['uploaded_file']['size']);
     
            
// Create the SQL query
            
$query "
                INSERT INTO `filejtc` (
                    `name`, `mime`, `size`, `data`, `created`
                )
                VALUES (
                    '
{$name}', '{$mime}', {$size}, '{$data}', NOW()
                )"
;
     
            
// Execute the query
            
$result $dbLink->query($query);
     
            
// Check if it was successfull
            
if($result) {
                echo 
'Succes! Het bestand is toegevoegt aan de database!';
            }
            else {
                echo 
'Error! Er is wat fout gegaan bij het invoegen aan de database! Probeer opnieuw!'
                   
"<pre>{$dbLink->error}</pre>";
            }
        }
        else {
            echo 
'Er is wat fout gegaan tijdens het uploaden, probeer opnieuw! '
               
'Error code: 'intval($_FILES['uploaded_file']['error']);
        }
     
        
// Close the mysql connection
        
$dbLink->close();
    }
    else {
        echo 
'Error! Er is geen bestand geselecteerd!';
    }
     
    
// Echo a link back to the main page
    
echo '<p>Klik <a href="../jtc/files.php">HIER</a> om verder te gaan!</p>';
    
?>


[ Bericht 9% gewijzigd door Djurres op 16-08-2014 10:28:41 ]
Tadumtiedum.
pi_143472484
Eerst een tip: gebruik de [php] en [/php] tags voor php, in plaats van [code] en [/code].
  zaterdag 16 augustus 2014 @ 10:19:59 #202
187069 slacker_nl
Sicko pur sang
pi_143472958
Tweede tip, als je died, dan hoef je geen else meer te gebruiken, dan heb je minder levels van indentation en das fijner om te lezen.
Derde tip, maak er functies van ipv losse files voor een functie. En maak er een klasse van.
In theory there is no difference between theory and practice. In practice there is.
  zaterdag 16 augustus 2014 @ 10:20:01 #203
355592 Djurres
Knowledge, Fuck it.
pi_143472960
Ga ik effe editten!
Tadumtiedum.
  zaterdag 16 augustus 2014 @ 10:30:04 #204
355592 Djurres
Knowledge, Fuck it.
pi_143473125
Heb t ge-edit, stond ook perongeluk 2x de zelfde code's :P

Maaru, even.. Heb het e.e.a geedit aan dit script, maar t meeste is copypaste werk.

Dat als ik die, dat ik geen else meer hoef te gebruiken ga ik even fixen, maar dat stukje functies, zou iemand daar mee me opweg kunnen helpen?
Tadumtiedum.
pi_143473217
Wat betreft de foutmelding lijkt me het vrij simpel: je vraagt een id op die niet in de database voorkomt. Je vraagt het als het goed is op zo'n manier op: http://www.website.nl/get_file.php?id=1 Komt dat id wel voor in je database? Zo niet dan is daar je probleem ;)
------___------ 53
----.(___).---- 42
---(o\_!_/o)---
  zaterdag 16 augustus 2014 @ 11:44:50 #206
355592 Djurres
Knowledge, Fuck it.
pi_143474523
Zo ver was ik ook nog :p

Ja, het ID komt in de database voor, dat is het probleem.
Tadumtiedum.
pi_143474873
quote:
0s.gif Op zaterdag 16 augustus 2014 11:44 schreef Djurres het volgende:
Zo ver was ik ook nog :p

Ja, het ID komt in de database voor, dat is het probleem.
Dus de query slaagt en het aantal resultaten is niet 1. Hoeveel resultaten zijn er dan wel?
En weet je zeker dat je met de goede database verbindt, en dat er niet nog een andere database is waar dezelfde tabel in staat zonder het gezochte id?
  zaterdag 16 augustus 2014 @ 12:51:34 #208
355592 Djurres
Knowledge, Fuck it.
pi_143476042
quote:
0s.gif Op zaterdag 16 augustus 2014 12:02 schreef Light het volgende:

[..]

Dus de query slaagt en het aantal resultaten is niet 1. Hoeveel resultaten zijn er dan wel?
En weet je zeker dat je met de goede database verbindt, en dat er niet nog een andere database is waar dezelfde tabel in staat zonder het gezochte id?
Even korte uitleg, het systeem is voor een X aantal comissies binnen een vereniging. De bedoeling is dat men de notulen hier upload zodat alles openbaar word voor alle commissies binnen de vereniging.

Om deze niet door elkaar te halen, heb ik meerdere tables binnen 1 db aangemaakt, voor iedere commissie, een table.

Na gecontroleerd te hebben of dit klopt, klopt dit allemaal. Ik heb namelijk ook een scriptje die de laatste 3 geuploadde notulen laat zien. Heb in iedere afdeling even een apart bestandje geupload, en wat me opvalt is dat als er 1 bestandje in staat, dat ik hem kan downloaden, alleen word er een verkeerde extensie mee gegeven. (zo ziet ie .doc als een .exe bestand oid.) Bij een .txt. of .pdf is er niets aan de hand.

Op het moment dat ik MEERDERE bestanden in de db heb staan kan hij de id's niet meer terug vinden, en krijg ik dus geen download.
Tadumtiedum.
pi_143481054
quote:
0s.gif Op zaterdag 16 augustus 2014 12:51 schreef Djurres het volgende:

[..]

Even korte uitleg, het systeem is voor een X aantal comissies binnen een vereniging. De bedoeling is dat men de notulen hier upload zodat alles openbaar word voor alle commissies binnen de vereniging.

Om deze niet door elkaar te halen, heb ik meerdere tables binnen 1 db aangemaakt, voor iedere commissie, een table.

Na gecontroleerd te hebben of dit klopt, klopt dit allemaal. Ik heb namelijk ook een scriptje die de laatste 3 geuploadde notulen laat zien. Heb in iedere afdeling even een apart bestandje geupload, en wat me opvalt is dat als er 1 bestandje in staat, dat ik hem kan downloaden, alleen word er een verkeerde extensie mee gegeven. (zo ziet ie .doc als een .exe bestand oid.) Bij een .txt. of .pdf is er niets aan de hand.

Op het moment dat ik MEERDERE bestanden in de db heb staan kan hij de id's niet meer terug vinden, en krijg ik dus geen download.
Klinkt alsof je het niet goed hebt opgelost. 3 aparte tabellen is sowieso niet nodig. Je kunt afdelingen makkelijk scheiden aan de hand van een id.

Voorderest lastog te helpen zonder code ;)
pi_143483268
quote:
1s.gif Op zaterdag 16 augustus 2014 16:08 schreef totalvamp het volgende:

[..]

Klinkt alsof je het niet goed hebt opgelost. 3 aparte tabellen is sowieso niet nodig. Je kunt afdelingen makkelijk scheiden aan de hand van een id.

Voorderest lastog te helpen zonder code ;)
Dat. En bestanden opslaan in de database is eigenlijk nooit een goed idee. Bestanden kunnen prima door een file system worden opgeslagen (die is daarvoor), zolang je het maar buiten de webroot doet. Dan hoef je in de db alleen op te slaan wat je als naam hebt gebruikt. De locatie is iets dat gewoon geconfigureerd kan worden en in code hoort.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')